Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python asyncio loop.run_,直到_完成不使用asyncio.sleep睡眠_Python_Python 3.x_Python Asyncio - Fatal编程技术网

Python asyncio loop.run_,直到_完成不使用asyncio.sleep睡眠

Python asyncio loop.run_,直到_完成不使用asyncio.sleep睡眠,python,python-3.x,python-asyncio,Python,Python 3.x,Python Asyncio,代码如下: In [168]: async def myTask(): ...: await asyncio.sleep(2) ...: print("processing task") In [168]: async def generator(): ...: for i in range(5): ...: asyncio.create_task(myTask()) In [168]: def abcd():

代码如下:

In [168]: async def myTask():
     ...:     await asyncio.sleep(2)
     ...:     print("processing task")

In [168]: async def generator():
     ...:     for i in range(5):
     ...:         asyncio.create_task(myTask())

In [168]: def abcd():
     ...:     t0=time.time()
     ...:     loop=asyncio.get_event_loop()
     ...:     loop.run_until_complete(generator())
     ...:     t1=time.time()
     ...:     print(t1-t0)
理想情况下,调用abc()应该休眠10秒左右(因为我没有等待
asyncio.create_任务(myTask())
),但该函数在不到0.1秒内完成

In [167]: abcd()
processing task
processing task
processing task
processing task
processing task
0.0004038810729980469

如果您尝试以下代码,大约2秒后将获得输出。好吧,但我们没有等待任何任务。原因是Jupyter笔记本本身正在事件循环中运行。因此,当您使用默认事件循环时,它实际上指向Jupyter笔记本的事件循环

import asyncio

async def myTask():
    await asyncio.sleep(2)
    print("processing task")

for i in range(5):
    asyncio.create_task(myTask())

如果您尝试以下代码,大约2秒后将获得输出。好吧,但我们没有等待任何任务。原因是Jupyter笔记本本身正在事件循环中运行。因此,当您使用默认事件循环时,它实际上指向Jupyter笔记本的事件循环

import asyncio

async def myTask():
    await asyncio.sleep(2)
    print("processing task")

for i in range(5):
    asyncio.create_task(myTask())

您没有等待
myTask()
。如果您尝试直接用
asyncio.sleep(2)
替换
myTask()
,您将得到完全相同的行为。嗯…@MateenUlhaq是的,但在这种情况下,不应打印输出。很混乱。你事先保存文件了吗?请用您发布的示例再试一次。它似乎没有为我生成额外的输出。@MateenUlhaq我正在python jupyter记事本中运行它,您还没有等待
myTask()
。如果您尝试直接用
asyncio.sleep(2)
替换
myTask()
,您将得到完全相同的行为。嗯…@MateenUlhaq是的,但在这种情况下,不应打印输出。很混乱。你事先保存文件了吗?请用您发布的示例再试一次。它似乎没有为我生成额外的输出。@MateenUlhaq我正在pythonjupyter笔记本中运行它