0
這是我的代碼: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!
這個輸出依次出現明顯的所有輸出具有相同的ID。我期望看到的是5個獨立的進程,提醒他們要睡覺,然後在相似的時間醒來。
爲什麼這不會發生?我已經對stackoverflow和其他網站進行了大量的研究,似乎每個人都確信,這應該讓「工作人員」可以在多個進程中應用,但似乎並非如此。
應該是:'apply_asynch(worker)'''不帶'()'。 – Bakuriu