Python多进程未启动:PyCharm Windows下被input阻塞如何解决?
Windows版PyCharm中多进程子进程被input阻塞的问题
测试代码如下,当注释掉time.sleep(0.5)后,子进程的add函数无法启动,程序被input("blocking...")阻塞。但该代码在系统原生控制台运行正常。
import multiprocessing import time def add(counter): while 1: print(counter.value) counter.value += 1 time.sleep(1) if __name__ == '__main__': counter = multiprocessing.Value('i', 0) t = multiprocessing.Process(target=add, args=(counter,)) t.start() # time.sleep(0.5) input("blocking...")
问题原因
Windows系统中Python多进程采用Spawn启动机制,PyCharm默认开启的「在输出控制台中模拟终端」选项,会导致控制台输入输出资源被input抢占,子进程无法完成初始化并执行代码。
解决方法
- 保留
time.sleep(0.5):给子进程预留足够的初始化时间,避免被主进程的input阻塞 - 修改PyCharm配置:打开运行/调试配置,取消勾选「在输出控制台中模拟终端」选项
- 显式设置进程启动方式:在主进程开头添加
multiprocessing.set_start_method('spawn'),确保进程启动逻辑符合Windows机制
内容的提问来源于stack exchange,提问作者Максим Федотов
相关产品推荐
相关产品推荐

