请教一个Python的multi-processing模块互相等待、防止竞争的问题。现在我有2个任务,任务1和任务2,要么1比2快、要么2比1快。现在要并发同时执行2个任务,快的完毕之后等待慢的。等待2个任务都结束之后,然后系统再转而运行第3个任务。
我尝试了一下apply_async:
import time
from multiprocessing import Pool
def func1():
print "This starts task1."
time.sleep(1)
print "This ends task1."
def func2():
print "This starts task2."
time.sleep(2)
print "This ends task2."
def func3(x):
print x
pool = Pool(processes=3)
result = pool.apply_async(func1, func2)
pool.start()
pool.join()
我觉得还是不对,但是不清楚正确的应该怎么写。另外,平台是Python2.7,所以高级一点的Asyncio就没法用了。请问这个快的等待慢的、然后两个全部结束后再运行新任务的并发执行应该怎么设计呢?
谢谢了先!
apply_async(func[, args[, kwds[, callback]]])
你的用法明显不对吗。