我正在尝试学习 asyncio 的用法,但遇到了障碍。
我想做什么?我正在尝试创建其中的一些,workers一旦它们被创建,他们就开始自己的task. 因此,在task3创建并启动时task1应该已经在执行其任务。我通过在单个 内使用循环来做到这一点coroutine,在每次迭代时worker创建并启动。
我面临的问题:当第一个工作人员完成其任务时,其他工作人员只是停止而不继续。
这是我的代码:
import asyncio
class Worker:
def __init__(self, session_name):
self.name = session_name
self.messagelist = ['--------1', '--------2', '--------3', '--------4']
async def job(self):
for i, message in enumerate(self.messagelist):
print(f"### Worker {self.name} says {message}")
await asyncio.sleep(20)
class Testmanager:
def __init__(self):
self.workers_name = ['test0', 'test1', 'test2', 'test3', 'test4']
async def create_and_start_workers(self, loop):
for i, name in enumerate(self.workers_name):
worker = Worker(name)
print(f"# Created worker {worker.name}")
loop.create_task(worker.job())
print(f"## …Run Code Online (Sandbox Code Playgroud)