我目前正在编写一个程序,其中有一个True True循环,我想在其中调用两个函数。在调用它们之前,会收集一些信息,这些信息确定是否应调用它们(而我无法在函数内部执行此操作)。这些函数需要花费一些时间来执行,但它们不能中断循环执行(它们应异步执行)。并且,当每个功能的实例都在运行时,也不能执行它们。我该如何实施?
我已经研究过asyncio,但不知道如何将其应用于我的问题。 在下面的代码示例中,您可以看到它的工作原理。
def B_sync_func():
global B
B = True
#do time consuming stuff
B = False
return
def A_async_func():
global A
A = True
#do time consuming stuff
A = False
return
A = False
B = False
while True:
info = data_gathering()
if execute_A(info) and !A:
A_async_func()
if execute_B(info) and !B:
B_async_func()
答案 0 :(得分:0)
如果只需要执行异步函数以在完成后再次调用它,则可以再次使函数本身调用:
def async_func():
# do stuff
async_func()
async_func()
您只需调用一次函数,并且每次完成时都会调用自身。这样,您可以实现与使用无限while循环时相同的行为,但是您可以在再次调用该函数之前完成该函数,甚至可以中断自身。