执行另一个功能时重复启动一个功能

时间:2016-06-08 12:52:25

标签: python python-3.x asynchronous

我的功能需要很长时间才能完成。在执行长函数时,如何每隔X秒执行另一个函数?

该脚本使用的是Python 3.4

1 个答案:

答案 0 :(得分:1)

这是一个非常简单的例子。如果在第一个函数完成时杀死第二个函数很重要,仍然可以调整它。

import threading, time

def func_long(ev):
    # do stuff here
    for _ in range(12):
        print("Long func still working")
        time.sleep(1)

    # if complete
    ev.set()

def run_func(ev, nsec):
    if ev.is_set():
        return
    print ("Here run periodical stuff")
    threading.Timer(nsec, run_func, [ev, nsec]).start()

def main():
    ev = threading.Event()
    threading.Timer(5.0, run_func, [ev, 5]).start()
    func_long(ev)

if __name__=='__main__':
    main()