Python Multiprocessing多进程示例运行耗时未达预期问题咨询
你代码的核心问题出在multiprocessing.Process的target参数赋值上:
# 错误写法 p1 = multiprocessing.Process(target=do_something()) p2 = multiprocessing.Process(target=do_something())
此处do_something()带了括号,代表直接在主进程中同步执行该函数,而非把函数对象传递给子进程执行。代码运行到这两行时,就已经先顺序执行了两次do_something,累计耗时2秒,之后才启动了两个无实际执行任务的子进程,再加上进程创建、调度的额外开销,总耗时自然在2.45秒左右,完全没有用到多进程并行的能力。
修改方案非常简单,去掉括号直接传递函数对象本身即可:
p1 = multiprocessing.Process(target=do_something) p2 = multiprocessing.Process(target=do_something)
修改后两个子进程会并行执行do_something的休眠逻辑,总耗时就会接近1秒,和教程运行结果一致。
内容的提问来源于stack exchange,提问作者Wong jacky
相关产品推荐
相关产品推荐

