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

如何实现Python函数10秒自动终止并循环执行?

解决方法

方案1:使用多进程(适合无法修改my_module的场景)

Python线程无法强制终止,若my_module是阻塞且不可修改的第三方模块,多进程是更可靠的实现方式。通过创建子进程运行模块任务,10秒后终止进程并循环重启:

import time
import multiprocessing
import my_module

def run_module():
    # 替换为实际调用my_module的代码,比如my_module.main()或其他入口函数
    my_module.run()  # 假设模块入口为run(),请根据实际情况修改

def main():
    while True:
        proc = multiprocessing.Process(target=run_module)
        proc.start()
        # 等待10秒
        time.sleep(10)
        # 终止进程并等待其彻底结束
        proc.terminate()
        proc.join()
        print("模块已终止,即将重启...")

if __name__ == "__main__":
    main()

方案2:给my_module添加停止标志(适合可修改模块源码的场景)

如果能修改my_module的代码,可以给模块添加全局停止标志,让模块在收到停止信号后自行退出,再循环重启:

首先修改my_module.py,加入停止逻辑:

# my_module.py
import time

stop_flag = False

def run():
    global stop_flag
    while not stop_flag:
        # 原模块的业务逻辑
        print("模块运行中...")
        time.sleep(1)

主程序代码:

import time
import threading
import my_module

def main():
    while True:
        # 重置停止标志
        my_module.stop_flag = False
        # 启动线程运行模块
        thread = threading.Thread(target=my_module.run)
        thread.start()
        # 等待10秒
        time.sleep(10)
        # 设置停止标志,让模块自行退出
        my_module.stop_flag = True
        thread.join()
        print("模块已停止,即将重启...")

if __name__ == "__main__":
    main()

注意事项

  • 原代码中my_function内仅写my_module是无效的,需替换为实际调用模块的入口函数(如my_module.main())才能执行任务。
  • 使用多进程时,需确保my_module的任务能在子进程中安全运行,避免资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:05:01