You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python用multiprocessing运行多个带循环的脚本时主循环卡住如何解决?

问题原因

  • 核心错误出在multiprocessing.Process的实例化参数上:原代码写法Process(target=load_and_run_script(key))会直接在主进程中同步调用load_and_run_script函数,执行目标脚本里的无限循环逻辑,导致主进程直接阻塞,既不会启动子进程,也无法继续后续的配置检测循环。
  • Process的target参数要求传入函数对象本身,函数的入参需要通过args参数单独传递,不能直接在target位置执行函数。

修复方法

只需要修改main.py中创建Process实例的一行代码即可:
将原有错误代码:

process = Process(target=load_and_run_script(key))

修改为:

process = Process(target=load_and_run_script, args=(key,))

修改后主进程不会主动执行目标脚本,只会把函数和参数传递给子进程,由process.start()触发子进程执行,主进程可以继续正常跑循环检测配置。

可选优化(按需添加)

如果需要支持手动改配置停止运行中的脚本,可以在循环中增加终止逻辑:

for key, value in list(cfg.items()):
    # 原有启动逻辑
    if value['should_run'] and not value['running']:
        process = Process(target=load_and_run_script, args=(key,))
        process_dict[key] = process
        process.start()
        cfg[key]['running'] = True
    # 新增停止逻辑
    elif not value['should_run'] and value['running'] and key in process_dict:
        process_dict[key].terminate()
        process_dict[key].join()
        del process_dict[key]
        cfg[key]['running'] = False

内容的提问来源于stack exchange,提问作者Chiel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:27:00