Python多处理apply_async:我错过了什么?

时间:2018-03-28 03:36:24

标签: python python-multiprocessing

我试图了解多处理库的apply_async功能是如何工作的,但我一直在抨击我的脑袋。我错过了什么?

    from multiprocessing import Pool
    import time
    import threading

    def test():
        time.sleep(15)
        print "test"

    def test_launcher():
        pool = Pool(processes=1)
        result = pool.apply_async(test)

    def printit():
      threading.Timer(5.0, printit).start()
      print time.strftime("%H:%M:%S", time.gmtime())

    if __name__ == '__main__':
        print "Before"
        test_launcher()
        print "After"

        printit()

我不想等待test()的返回,我想继续并在完成后从test()获得打印。

不应该打印"测试"打印2到3次后?

1 个答案:

答案 0 :(得分:0)

如果您希望主进程等待子进程,请添加:

pool.close()
pool.join()

在最后一个打印声明之后。否则,主进程将在子进程完成之前终止