[英]Multiprocesses will not run in Parallel on Windows on Jupyter Notebook
我目前正在使用jupyter笔记本电脑在Windows上工作,并且一直在努力使多进程工作。 它不会并行运行我所有的异步程序,而是一次运行一个异步程序,请提供一些指导以解决我的问题。 我需要将结果放入变量中,以备将来使用。 我不明白什么?
import multiprocessing as mp
import cylib
Pool = mp.Pool(processes=4)
result1 = Pool.apply_async(cylib.f, [v]) # evaluate asynchronously
result2 = Pool.apply_async(cylib.f, [x]) # evaluate asynchronously
result3 = Pool.apply_async(cylib.f, [y]) # evaluate asynchronously
result4 = Pool.apply_async(cylib.f, [z]) # evaluate asynchronously
vr = result1.get(timeout=420)
xr = result2.get(timeout=420)
yr = result3.get(timeout=420)
zr = result4.get(timeout=420)
这些任务正在并行执行。
但是,这将同步获取结果,即“等到result1准备好,然后等到result2准备好,..”,依此类推。
vr = result1.get(timeout=420)
xr = result2.get(timeout=420)
yr = result3.get(timeout=420)
zr = result4.get(timeout=420)
考虑下面的示例代码,其中每个任务都是异步轮询的
from time import sleep
import multiprocessing as mp
pool = mp.Pool(processes=4)
# Create tasks with longer wait first
tasks = {i: pool.apply_async(sleep, [t]) for i, t in enumerate(reversed(range(3)))}
done = set()
# Keep polling until all tasks complete
while len(done) < len(tasks):
for i, t in tasks.items():
# Skip completed tasks
if i in done:
continue
result = None
try:
result = t.get(timeout=0)
except mp.TimeoutError:
pass
else:
print("Task #:{} complete".format(i))
done.add(i)
您可以复制上述内容,也可以在apply_async
上使用callback参数在任务完成时自动执行一些处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.