Python多进程未并行执行?代码耗时不符预期求助
问题解决方法
你的代码存在两个关键问题,导致进程串行执行:
- 创建
multiprocessing.Process时,错误地直接调用了sleeper(),这会让函数立刻在主进程中执行,而非交给子进程处理。 - 启动第一个进程后立刻调用
join(),会阻塞主进程直到该进程结束,才会启动第二个进程,自然变成串行执行。
修正后的代码如下:
import multiprocessing import time inTime = time.time() def sleeper(): print("Im sleeper") time.sleep(1) if __name__ == "__main__": # 正确传递函数对象,不要加括号调用 p1 = multiprocessing.Process(target=sleeper) p2 = multiprocessing.Process(target=sleeper) # 先启动所有进程 p1.start() p2.start() # 再等待所有进程结束 p1.join() p2.join() nTime = time.time() print(f"done in {round(nTime-inTime,2)} s")
修改后两个子进程会并行执行,总耗时会接近1秒。
内容的提问来源于stack exchange,提问作者Nikunj Vashishtha
相关产品推荐
相关产品推荐

