我有一个apply_async的测试代码。为什么test_call中的else的'apply_sync'没有被执行?如果“if-else”块被相同的'apply_async'调用替换,则两者都被执行。
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]
预期应付:[1,4,9,16,25,36]
答案 0 :(得分:0)
除了Vikas提到的丢失的逗号之外,你还在第一个apply_async行的末尾有一个无关紧密的paren。
解决这两个问题并运行代码,我得到了你期望的输出。
仅修复paren而不是逗号,我得到你描述的输出。