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

如何通过Python主控脚本并行运行带无限循环的多个子脚本

问题根因

你之前的尝试存在两个核心问题:

  1. 线程创建语法错误:Thread(target=function_1()) 写法中给函数加了括号,相当于创建线程前就直接执行了function_1,死循环阻塞了后续代码,根本不会走到第二个线程的创建步骤。正确写法是仅传入函数名不加括号,即target=function_1。
  2. 场景适配错误:你要运行的是CPU密集型死循环任务,CPython的全局解释器锁(GIL)会限制多线程的并行效果,同一时间只会有一个线程执行CPU计算任务,这种场景更适合用多进程实现。

实现方案

分两种场景给出可直接运行的代码:

方案1:多进程运行封装好的业务逻辑

如果可以把两个子脚本的逻辑封装成函数放在主控脚本里,直接用multiprocessing库实现即可:

from multiprocessing import Process
from time import sleep

# 对应原script1的逻辑
def run_script1():
    array_1 = []
    x = 0
    while True:
        array_1.append(x)
        x += 1
        # 可选:加打印验证并行效果
        # print(f"script1: {x}")
        # sleep(1)

# 对应原script2的逻辑
def run_script2():
    array_2 = []
    x = 0
    while True:
        array_2.append(x)
        x += 1
        # 可选:加打印验证并行效果
        # print(f"script2: {x}")
        # sleep(1)

if __name__ == '__main__':
    p1 = Process(target=run_script1)
    p2 = Process(target=run_script2)
    p1.start()
    p2.start()
    p1.join()
    p2.join()

方案2:直接运行独立的子脚本文件

如果不想修改现有script_1.py、script_2.py的代码,直接用subprocess启动独立Python进程即可:

import subprocess
import sys

if __name__ == '__main__':
    # 启动两个子进程分别运行两个脚本
    process1 = subprocess.Popen([sys.executable, "script_1.py"])
    process2 = subprocess.Popen([sys.executable, "script_2.py"])
    # 等待进程结束
    process1.wait()
    process2.wait()

运行前确保script_1.py、script_2.py和主控脚本在同一工作目录下即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:24:07