我有以下脚本,但它无法正常工作。我想第一个函数总是重复,第二个函数应该在第一个函数返回 result1、result2 时启动。我想再添加一个函数,它应该在第二个函数完成第一个函数的 result1 作业后 40 秒开始。第三个函数应该对 result2 做些什么。我想使用 asyncio 库异步处理它,因为我需要第一个函数在第三个函数休眠时不阻塞 40 秒。我尝试使用 chatgpt,但这个工具向我推荐了错误的东西。怎么做?
import asyncio
import logging
async def first_function(queue1, queue2):
while True:
# do something
result1 = "some result"
result2 = {"key": "value"}
await queue1.put(result1)
await queue2.put(result2)
await asyncio.sleep(1) # wait for 1 second
async def second_function(queue1, queue2, queue3):
while True:
result1 = await queue1.get()
result2 = await queue2.get()
# do something with the results
logging.info(f"Second function received: {result1}, {result2}")
await queue3.put(result1)
await asyncio.sleep(1) # wait for 1 second
async def third_function(queue):
while True:
result = await queue.get()
await asyncio.sleep(40) # wait for 40 seconds
# do something with the result
logging.info(f"Third function received: {result}")
async def main():
queue1 = asyncio.Queue()
queue2 = asyncio.Queue()
queue3 = asyncio.Queue()
task1 = asyncio.create_task(first_function(queue1, queue2))
task2 = asyncio.create_task(second_function(queue1, queue2, queue3))
task3 = asyncio.create_task(third_function(queue3))
await asyncio.gather(task1, task2, task3)
我尝试了所有我用谷歌搜索的东西,当达到第三个功能时它总是阻止我的代码 40 秒