我试图以非阻塞的方式执行一个异步无限循环函数。目前我有以下代码:
class OpcuaClient():
def __init__(self):
...
#subscribe to changes
loop = asyncio.get_event_loop()
loop.create_task(self.subscribe_to_node(self.type_Nid))
loop.create_task(self.subscribe_to_node(self.housingSerial_Nid))
loop.run_forever()
print("subprocesses started")
async def subscribe_to_node(self, nodeid):
async with Client(url=self.url) as client:
node = client.get_node(nodeid)
# subscribing to node
sub = await client.create_subscription(500, self.handler)
await sub.subscribe_data_change(node)
# subscribe for infinte time
while True:
await asyncio.sleep(1)
然而,loop.run_forever() 阻塞了程序执行,导致 "subprocess started" 没有被打印出来。请注意,我想在同步构造函数中启动后台进程。我该如何实现?我也尝试了一些多处理/线程的方法,但都失败了。