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

如何在Python脚本中每隔60秒调用另一个Python脚本?

解决每隔60秒运行另一个Python脚本的问题

你的两种写法无效的原因其实和Python的模块导入机制有关,咱们先理清问题出在哪:

  • 写法1里,import mailyolla只会在第一次导入时执行脚本里的顶层代码,之后循环里只写mailyolla这个模块名,根本不会触发任何执行逻辑。
  • 写法2里,Python会缓存已经导入的模块,第一次import mailyolla之后,后续的import语句只会直接返回缓存的模块对象,不会重新执行脚本内容。

下面给你几种可行的解决方案,按需选择:

方案1:封装原脚本为函数(推荐)

这是最符合Python模块化思想的做法,把mailyolla.py里的执行代码封装成一个函数,比如main():

# mailyolla.py
def main():
    # 原来的执行代码放在这里
    print("运行mailyolla的核心逻辑")

if __name__ == "__main__":
    main()

然后在主脚本里导入并循环调用这个函数:

import time
import mailyolla

while True:
    mailyolla.main()  # 每次循环主动调用函数执行逻辑
    time.sleep(60)

这种方式既高效,又能灵活控制执行逻辑,还方便单独运行mailyolla.py做测试。

方案2:用importlib重新加载模块(不修改原脚本时用)

如果不想改动mailyolla.py的代码,可以用importlib.reload()强制重新加载模块,这样每次都会执行脚本里的顶层代码:

import time
import importlib
import mailyolla

while True:
    importlib.reload(mailyolla)  # 重新加载模块,触发顶层代码执行
    time.sleep(60)

⚠️ 注意:这种方式会重置模块里的全局变量和状态,如果原脚本有依赖状态的逻辑,可能会出问题,谨慎使用。

方案3:用subprocess作为子进程运行(完全隔离)

如果希望每次运行都和单独执行python mailyolla.py效果一样,可以用subprocess模块启动子进程:

import time
import subprocess

while True:
    # 根据你的Python环境调整命令,比如用python3
    subprocess.run(["python", "mailyolla.py"])
    time.sleep(60)

这种方式的好处是完全隔离,每次运行都是全新的进程,不会受模块缓存或状态的影响,但开销比前两种稍大,适合对隔离性要求高的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:58:47