apply_asyncのテストコードが1つあります。 test_callのelseの 'apply_sync'が実行されないのはなぜですか? if-elseブロックが同じ 'apply_async'呼び出しで置き換えられると、両方が実行されます。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]
期待O/P [1、4、9、16、25、36]欠落カンマに加え
あなたはp.apply_asyncにおけるコマ(_EXECUTE、引数を=([4、5、6])、コールバック= _join) がp.apply_async(_EXECUTE、引数の=([4、5であるべきで、欠落しています6]、)、callback = _join) –