python - 遵循教程时,Asyncio 模块在 Python 3.8 上不起作用
问题描述
源代码:
import asyncio
import time
async def mycoro(number):
start = time.time()
print(f'Starting {number}')
await asyncio.sleep(1)
print(f'Finishing {number}')
end = time.time()
print(end - start)
return str(number)
many = asyncio.gather(
mycoro(1),
mycoro(2),
mycoro(3)
)
asyncio.run(many)
完全错误:
Traceback (most recent call last):
File "c:/Users/JasonTorrez/Desktop/Asyncio/test.py", line 19, in <module>
asyncio.run(many)
File "C:\Users\JasonTorrez\AppData\Local\Programs\Python\Python38-32\lib\asyncio\runners.py", line 37, in run
raise ValueError("a coroutine was expected, got {!r}".format(main))
ValueError: a coroutine was expected, got <_GatheringFuture pending>
我不知道为什么它不起作用。我尝试了很多视频,但没有任何帮助。
解决方案
迪恩先生是对的。
https://bugs.python.org/issue36222
https://docs.python.org/dev/library/asyncio-task.html#running-tasks-concurrently
您可以从链接中找到教育部信息。
import asyncio
import time
async def mycoro(number):
start = time.time()
print(f'Starting {number}')
await asyncio.sleep(1)
print(f'Finishing {number}')
end = time.time()
print(end - start)
return str(number)
async def call_async():
await asyncio.gather(
mycoro(1),
mycoro(2),
mycoro(3)
)
asyncio.run(call_async())
Starting 1
Starting 2
Starting 3
Finishing 1
1.0044970512390137
Finishing 2
1.0045382976531982
Finishing 3
1.004551887512207
推荐阅读
- java - Java 输出循环问题
- python-3.x - 向 TCP 服务器添加异步功能?
- javascript - 如何异步执行多个 mongoose 查询并等待它们全部执行完毕后再发送响应?
- python - 在 Python HTTP 客户端 urllib3 和请求之间进行选择
- phpunit - 无法在 phpunit 中运行 Drupal::service()
- android - 即使在模拟器上,“adb root”命令也会返回“adbd 无法在生产版本中以 root 身份运行”?
- javascript - AJAX - “POST”请求首先执行“GET”请求,然后是“POST”请求
- java - ExoPlayer 流mp3
- javascript - Q. 如何查询一个模型,在一对多的关系中,返回关联的记录?
- powerpc - 在 trace32 中更改新版本的地址位置