也许我理解错了,但这是我的问题。
正如我在纪录片中所读到的,您需要创建任务来同时执行它们:
async def main():
x=1
lastman = deque([])
while True:
task1 = asyncio.create_task(get_salt())
task2 = asyncio.create_taks(get_sugar_every10_secondes())
await task1
await task2
async def get_salt():
salt = await salt.fetch()
print(salt)
async def get_sugar_every10_secondes():
await asyncio.sleep(10)
sugar = await sugar.fetch()
print(sugar)
asyncio.get_even_loop().run_until_completed(main())问题是,我每10秒钟只能得到盐和糖,但我希望盐越快越好,糖越快越好。(py3.7)
发布于 2019-04-28 22:16:37
while True:
# ...
await task1
await task2这部分的意思是:
在完成这两项任务之前,不会重新创建任何任务。
相反,您应该创建两个任务,每个任务在while True循环中调用自己的协同工作。这样,他们中的任何一个都不应该等其他人做。
就像这样:
import asyncio
from collections import deque
async def do_constantly(coro_func):
while True:
await coro_func()
async def get_salt():
await asyncio.sleep(1)
print('salt')
async def get_sugar_every10_secondes():
await asyncio.sleep(10)
print('sugar')
async def main():
task1 = asyncio.create_task(do_constantly(get_salt))
task2 = asyncio.create_task(do_constantly(get_sugar_every10_secondes))
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.run_forever() # to keep tasks spawninghttps://stackoverflow.com/questions/55894252
复制相似问题