Python 多处理';应用异步';if-else块中的执行
我有一个用于apply\u async的测试代码。为什么test_调用中的else的“apply_sync”没有执行?如果“If-else”块被相同的“apply\u async”调用替换,则两个调用都将执行Python 多处理';应用异步';if-else块中的执行,python,multiprocessing,Python,Multiprocessing,我有一个用于apply\u async的测试代码。为什么test_调用中的else的“apply_sync”没有执行?如果“If-else”块被相同的“apply\u async”调用替换,则两个调用都将执行 from multiprocessing import Pool def _execute(l): res = [] for i in l: res.append(i * i) return res class TestMulti(obje
from multiprocessing import Pool
def _execute(l):
res = []
for i in l:
res.append(i * i)
return res
class TestMulti(object):
def __init__(self):
self.l = []
def test_call(self):
p = Pool(2)
def _join(res):
self.l += res
for i in range(2):
if i % 2 == 0:
p.apply_async(_execute, args=([1, 2, 3],),callback=_join)
else:
p.apply_async(_execute, args=([4, 5, 6]), callback=_join)
p.close()
p.join()
print self.l
if __name__ == '__main__':
t = TestMulti()
t.test_call()
O/p:[1,4,9]
预期O/p:[1,4,9,16,25,36]除了Vikas提到的缺少逗号之外,在第一行apply_async的末尾还有一个无关的关闭参数 修复这两个问题并运行您的代码,我将得到您期望的输出
只修复了paren而不是逗号,我得到了您描述的输出。p.apply\u async(\u execute,args=([4,5,6]),callback=\u join中缺少了一个昏迷,应该是p.apply\u async(\u execute,args=([4,5,6]),callback callback=\u join额外的paren是输入错误。args中的逗号是问题所在。Thnx。