Windows系统下Python3创建的multiprocessing进程无法执行问题排查
问题原因说明
你提供的代码本身逻辑没有错误,子进程实际已经正常运行,看不到print输出是IDLE运行环境的特性导致的,具体原因如下:
- Windows平台下Python的
multiprocessing模块默认使用spawn模式创建子进程,子进程不会继承主进程的标准输出配置。IDLE的交互控制台会把主进程的标准输出重定向到自身的图形界面缓冲区,子进程的print输出直接发送到系统默认的标准输出流,没有被IDLE捕获,因此无法在IDLE界面看到打印内容。 - 如果需要验证子进程确实执行,可以将代码保存为后缀为
.py的本地文件,打开系统终端(Windows的命令提示符/Powershell、macOS/Linux的终端),执行python 文件名.py命令,就能看到正常的test输出。 - 若要在IDLE环境下确认子进程执行状态,可以将输出写入本地文件验证,参考修改代码如下:
import time from multiprocessing import Process def test_func(name): # 输出写入本地文件验证执行 with open("process_run_log.txt", "w", encoding="utf-8") as f: f.write(f"传入参数为:{name}") print(name) if __name__ == "__main__": p1 = Process(target=test_func, args=('test',)) p1.start() p1.join() # 等待子进程执行完成后再继续主进程逻辑 time.sleep(10)
运行代码后查看同级目录下生成的process_run_log.txt,如果文件内有对应内容,即可确认子进程已经正常执行。
内容的提问来源于stack exchange,提问作者just a student
相关产品推荐
相关产品推荐

