【发布时间】:2018-07-18 03:38:36
【问题描述】:
提前致谢,
假设你有一个异步函数:
async def create_list(num):
print("Creating a list that is length {}".format(num))
i = 0
list = []
While True:
i += 1
if i > 100000:
await asyncio.sleep(0.0001)
list.append(i)
if i == num:
print("Finished creating a list that is length {}".format(num))
return list
说你想启动一些协程:
async def main():
list1 = loop.create_task(create_list(1000))
list2 = loop.create_task(create_list(1000))
list3 = loop.create_task(create_list(1000))
await asyncio.wait([list1, list2, list3])
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
我的问题是:
首先,假设是否正确:
if i > 100000:
await asyncio.sleep(0.0001)
这里的代码块会暂时停止任务并自动切换 到另一个协程?
如果是这样,
然后每个协程中的“i”变量是否单独存储,
或者任务的暂停是否完全放弃了前一个进程 当你回到同一个过程时,你将不得不开始 再次从 0 开始。
谢谢!
【问题讨论】:
-
抱歉,第 5 行有一个错字,While 应该被缩减为 while。我忘了写 import asyncio。
-
那你为什么不直接edit你的问题并纠正错误呢? ;)
标签: python function asynchronous coroutine