如何循环运行两个Python脚本 实现无终止往复调用执行
两个Python脚本循环互相调用持续运行的实现方案
你当前写的代码无法持续循环的核心原因是Python自带模块导入缓存机制:同一个模块在同一个解释器进程中仅会被执行一次,首次导入完成后,后续所有
import语句都会直接读取缓存中的模块对象,不会重新执行模块内的代码。
以下是两种可实现循环运行的方案:
方案1:跨进程调用(长期运行推荐,无栈溢出问题)
通过subprocess模块每次启动新的解释器进程运行目标脚本,不会受导入缓存限制,也不会出现递归栈溢出问题。
- file1.py 代码:
import subprocess import sys print("HI") # 调用当前Python解释器运行file2.py subprocess.run([sys.executable, "file2.py"])
- file2.py 代码:
import subprocess import sys print("Hello") # 调用当前Python解释器运行file1.py subprocess.run([sys.executable, "file1.py"])
注意:该方案会持续创建新的子进程,如需终止运行,需要手动结束整个进程树,而非单个进程。如果需要降低CPU占用,可以在print语句后加
import time;time.sleep(1)调整输出间隔。
方案2:单进程重载模块(适合短时测试)
通过importlib.reload强制重载模块,跳过导入缓存,在单进程内实现循环调用。
- file1.py 代码:
print("HI") import importlib import file2 # 每次强制重载file2触发代码执行 importlib.reload(file2)
- file2.py 代码:
print("Hello") import importlib import file1 # 每次强制重载file1触发代码执行 importlib.reload(file1)
注意:该方案本质是递归调用,会持续累加调用栈深度,达到Python默认递归深度上限(约1000次)后会抛出
RecursionError自动终止,仅适合短时间测试使用。
内容的提问来源于stack exchange,提问作者Jeffrey
相关产品推荐
相关产品推荐

