Мне кажется, проблема в том, что второй запущенный процесс compute_pi
к тому времени, когда вы ложитесь спать, уже не работает. Это потому, что вы используете call_later
- asyncFunc
продолжает работать после вызова и сразу же возвращается, так как он асинхронный. Это
class A():
def __init__(self):
print("Actvating")
loop = asyncio.get_event_loop()
loop.run_until_complete(self.asyncFunc(loop))
print("end")
loop.close()
def compute_pi(self):
print("3.14???")
async def asyncFunc(self,loop):
print("Called")
loop.call_later(1, self.compute_pi)
await asyncio.sleep(2)
if __name__== "__main__":
a = A()
отпечатков 3.14
. Если вы удалите sleep
или сделаете время коротким, этого не произойдет - процесс остановится, поэтому вы не получите вовремя call_later
. Вот почему спать вне run_until_complete
не будет работать, независимо от периода ожидания. Вы должны поддерживать сам цикл до обратного вызова.