【发布时间】:2021-03-27 03:11:41
【问题描述】:
我正在尝试使用 asyncio 在 Python 上并行执行代码。这个想法是并行运行多个作业。
这是我的代码:
import asyncio
import threading
async def print_thread():
for n in range(5):
print("Number: {}".format(threading.get_ident()))
if __name__ == '__main__':
loop = asyncio.get_event_loop()
try:
loop.run_until_complete(print_thread())
finally:
loop.close()
输出是:
Number: 4599266752
Number: 4599266752
Number: 4599266752
Number: 4599266752
Number: 4599266752
据我了解,代码已在单个线程上执行。有没有办法并行化它?
PS
如果我将代码更改为:
async def print_thread():
print("Number: {}".format(threading.get_ident()))
if __name__ == '__main__':
loop = asyncio.get_event_loop()
try:
for n in range(5):
loop.run_until_complete(print_thread())
我得到了同样的结果。
【问题讨论】:
-
有什么理由不使用线程池(
multiprocessing.dummy.pool.Pool)? -
asyncio和multiprocessing有区别吗?我是 Python 的新手。
标签: python python-asyncio