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

Python3多进程疑问:为何仅输出aaa而非预期的交替内容?

问题分析与修复方案

嘿,我来帮你揪出代码里的问题——你遇到的情况是因为代码里有两个关键错误,咱们拆解来看:

1. 进程目标函数传参错误

你写的multiprocessing.Process(target=aaa())这里犯了个常见的小错误:加了括号()。当你给target传aaa()时,Python会立刻在主进程里执行这个函数,而aaa()是个死循环,所以主进程直接卡在打印aaa的循环里,根本没机会去创建第二个进程p2,更别说启动它了。

正确的做法是传递函数本身(不要括号),这样multiprocessing才会把这个函数作为子进程的执行目标:

p1 = multiprocessing.Process(target=aaa)
p2 = multiprocessing.Process(target=bbb)

2. 进程方法调用缺少括号

你写的p1.start和p1.join只是引用了进程对象的方法,并没有实际调用它们。这些都是需要执行的方法,必须加上括号()才能生效:

p1.start()
p2.start()
p1.join()
p2.join()

修复后的完整代码

import multiprocessing
def aaa():
    while True:
        print('aaa')
def bbb():
    while True:
        print('bbb')
if __name__=='__main__':
    p1 = multiprocessing.Process(target=aaa)
    p2 = multiprocessing.Process(target=bbb)
    p1.start()
    p2.start()
    p1.join()
    p2.join()

补充说明

修复后,两个子进程会同时运行,你会看到aaa和bbb交替打印(不过具体的交替顺序由操作系统的进程调度决定,不一定是严格的一对一交替,但肯定会同时出现两种输出)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:56:23