Это мой код:Python многопроцессорной apply_async только с помощью одного процесса
import multiprocessing
import time
import os
def worker():
print str(os.getpid()) + " is going to sleep..."
time.sleep(1)
print str(os.getpid()) + " woke up!"
return
if __name__ == "__main__":
pool = multiprocessing.Pool(processes = 8)
for _ in range(5):
pool.apply_async(worker())
И мой выход:
23173 is going to sleep...
23173 woke up!
23173 is going to sleep...
23173 woke up!
23173 is going to sleep...
23173 woke up!
23173 is going to sleep...
23173 woke up!
23173 is going to sleep...
23173 woke up!
Этот выход появляется последовательно и, очевидно, все выходы имеют один и тот же идентификатор. То, что я ожидаю увидеть, - это 5 отдельных процессов, предупреждающих о том, что они будут спать, а затем пробуждаются в подобные моменты.
Почему этого не происходит? Я провел много исследований в stackoverflow и других сайтах, и кажется, что все уверены, что это должно иметь «рабочий» вызываемый, примененный к нескольким процессам, но, похоже, это не так.
должен быть: 'apply_asynch (worker)' без '()'. – Bakuriu