Python 多处理';应用异步';if-else块中的执行

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

我有一个用于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(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。