Python多进程代码在Windows无法执行,Linux下正常运行求助
Windows下Python多进程代码无法运行的解决方法
Windows系统下Python的multiprocessing模块实现机制和Linux不同——Linux基于fork系统调用,而Windows会重新启动Python解释器并导入你的脚本文件。如果没有明确的主入口判断,脚本中的进程创建代码会被重复执行,导致程序异常甚至崩溃。
你的代码缺少主入口判断,修改如下:
from multiprocessing import Process import os import time def square(n): # 用于演示的测试函数 for i in range(n): print(i) i * i time.sleep(0.1) if __name__ == '__main__': # 存储创建的进程 processes = [] # 获取CPU核心数 cores = os.cpu_count() # 创建进程 for i in range(cores): p = Process(target=square, args=(100,)) processes.append(p) # 启动所有进程 for proc in processes: proc.start() # 等待所有进程完成 for proc in processes: proc.join() print("All processes are done")
修改说明
- 把进程创建、启动、等待的逻辑全部放到
if __name__ == '__main__':代码块中 - 这个判断会确保只有当脚本作为主程序运行时才执行多进程相关代码,避免Windows下重复导入脚本时无限创建进程的问题
内容的提问来源于stack exchange,提问作者Satish Kumar Singh
相关产品推荐
相关产品推荐

