Python 多处理不使用可用内核

Python multiprocessing NOT using available Cores

我 运行 下面的简单 Python 程序 - 分别做 4 个过程。我希望程序在 4 秒内完成执行(如您在代码中所见),但它需要 10 秒——这意味着它不进行并行处理。我的 CPU 中有超过 1 个核心,但程序似乎只使用了一个。请指导我如何在这里实现并行处理?谢谢

import multiprocessing
import time
from datetime import datetime

def foo(i):
    print(datetime.now())
    time.sleep(i)
    print(datetime.now())
    print("=========")

if __name__ == '__main__':
    for i in range(4,0,-1):
        p = multiprocessing.Process(target=foo, args=(i,))
        p.start()
        p.join()
    print("Done main")

每当您在进程上调用 join 时,您的执行就会阻塞并等待该进程完成。所以在你的代码中,你总是在开始下一个之前等待最后一个过程完成。您需要保留对进程的引用,并在所有进程启动后 join 对它们进行引用,例如。像这样:

if __name__ == '__main__':
    processes = [multiprocessing.Process(target=foo, args=(i,))
                 for i in range(4,0,-1)]
    for p in processes: 
        p.start()
    for p in processes:
        p.join()
    print("Done main")