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

为何Python代码持续循环输出11111并陷入死循环?

程序持续输出11111并陷入循环的原因分析

核心问题:进程嵌套循环+无保护的模块顶层代码

  1. 执行流程触发无限循环

    • 运行python aaa.py时,aaa.py顶层代码先打印11111,定义exp=0,接着通过subprocess.run启动新进程运行bbb.py。
    • 新进程里的bbb.py执行import aaa,Python导入模块时会执行模块内所有顶层代码,于是这个新进程中的aaa.py又会打印11111,再次启动bbb.py进程。
    • 该过程无限重复,形成嵌套的进程循环,导致程序持续输出11111并卡住。
  2. 根本原因:缺少主程序入口保护
    Python中模块被导入时会执行所有顶层代码,而你的aaa.py没有用if __name__ == '__main__':包裹启动子进程的逻辑,导致模块被导入时也会触发子进程启动,进而引发循环。

解决方法

在aaa.py中把主程序逻辑放到if __name__ == '__main__':块内,只有当aaa.py作为主程序运行时才执行子进程启动逻辑,被导入时不会执行:

import subprocess

exp = 0

if __name__ == '__main__':
    print(11111)
    subprocess.run(['python', 'bbb.py'])
    print(22222)
    print(exp)

修改后,bbb.py导入aaa时只会执行模块初始化代码(定义exp=0),不会启动新的子进程,循环被打破,程序能正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:34:56