为我糟糕的措辞道歉,但我要说了。
当其他任务正在运行时,我需要每30分钟执行一次函数,但是我不知道如何做到这一点,也不知道如何将其转换为google。我的目标是修改我的脚本,让它像任务管理器程序一样运行(没有UI),包括后台服务、程序、实用程序等。
我试图通过对每个函数计时并创建执行其他函数的函数来创建它,然而,无论我尝试什么,它都像任何脚本一样以异步方式运行。
下面就是一个这样的例子。
def function_1():
"""Perform operations"""
pass
def function_2():
"""Perform operations"""
pass
def executeAllFunctions():
function_1()
function_2()当function_2以正常方式执行时,如何将function_1初始化为后台任务?
发布于 2020-02-25 17:10:32
here有一个很好的答案。其主要思想是在线程内的一个永久循环中运行异步协程。
在你的例子中,你必须将函数一定义为协程,在线程中使用一个调用者函数并创建一个线程。
示例很大程度上启发了链接中的答案,但也适用于您的问题。
@asyncio.coroutine
def function_1():
while True:
do_stuff
yield from asyncio.sleep(1800)
def wrapper(loop):
asyncio.set_event_loop(loop)
loop.run_until_complete(function_1())
def function_2():
do_stuff
def launch():
loop = asyncio.get_event_loop()
t = threading.Thread(target=wrapper, args=(loop,)) # create the thread
t.start() # launch the thread
function_2()
t.exit() # when function_2 returnhttps://stackoverflow.com/questions/60388403
复制相似问题