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

如何实现带不同参数的同一循环函数多进程并发执行?

问题分析与解决方案

原代码的核心问题

  • 错误的进程目标参数传递:原代码中Process(target=func(1).start())直接执行了func(1),而func是无限循环函数,程序会一直卡在这个函数的执行中,根本无法走到创建第二个进程的步骤。Process的target参数需要传入函数对象,而非函数执行后的结果。
  • 缺少多进程入口保护:在Python多进程实现中(尤其是Windows平台),必须用if __name__ == '__main__':包裹进程启动代码,否则会导致子进程重复执行整个脚本,引发异常或无法正常并发。
  • 冗余的循环条件:while 2 - 1 > 0完全等价于while True,写法冗余且可读性差。

修正后的可行代码

from multiprocessing import Process

def func(x):
    while True:
        print("func:", x)

if __name__ == '__main__':
    p1 = Process(target=func, args=(1,))
    p2 = Process(target=func, args=(2,))

    p1.start()
    p2.start()

关键修正点说明

  • 正确传递target和参数:target=func传入函数对象,args=(1,)指定函数的参数(注意元组结尾的逗号,即使只有一个参数也不能省略)。
  • 添加入口保护:if __name__ == '__main__':确保只有主进程会执行进程创建和启动的代码,避免子进程重复初始化。
  • 简化循环条件:用while True替代冗余的条件,提升代码可读性。

运行上述代码后,两个子进程会并发执行,随机交替输出func: 1和func: 2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:15:23