示例使用python执行高并发任务
【摘要】 1 简介本文示例如何实验Python 实现并发任务的两种方式写出对应版本 2 密集IO任务方案:使用 concurrent.futures.ThreadPoolExecutor适合 I/O 密集任务(比如网络请求、文件操作) from concurrent.futures import ThreadPoolExecutor, as_completed def worker(i)...
1 简介
本文示例如何实验Python 实现并发任务的两种方式写出对应版本
2 密集IO任务方案:使用 concurrent.futures.ThreadPoolExecutor
适合 I/O 密集任务(比如网络请求、文件操作)
from concurrent.futures import ThreadPoolExecutor, as_completed
def worker(i):
# 模拟工作(这里可以是 I/O 操作)
# 例如:网络请求、文件写入等
print(f"Worker {i} starting work")
# do some work
return f"Worker {i} done"
def main():
with ThreadPoolExecutor(max_workers=1000) as executor:
futures = [executor.submit(worker, i) for i in range(1000)]
for future in as_completed(futures):
print(future.result())
if __name__ == "__main__":
main()
ThreadPoolExecutor 管理一个线程池。
每个任务在独立线程中执行。
as_completed() 用于等待所有任务完成。
Python 的线程调度由操作系统完成,而不是解释器。
受 GIL(全局解释器锁) 限制,多个线程不能同时执行纯 Python 代码(只能并发 I/O)。
因此它更适合 I/O 密集型 而非 CPU 密集型任务。
2 异步网络任务方案 使用 asyncio(协程方式)
适合大量异步任务(如网络请求)
import asyncio
async def worker(i):
print(f"Worker {i} starting work")
# 模拟 I/O 异步等待
await asyncio.sleep(0.01)
return f"Worker {i} done"
async def main():
tasks = [asyncio.create_task(worker(i)) for i in range(1000)]
results = await asyncio.gather(*tasks)
for r in results:
print(r)
if __name__ == "__main__":
asyncio.run(main())
asyncio 是 Python 的原生异步框架。
每个 async def 函数是一个 协程(coroutine)。
await asyncio.gather() 并发调度 1000 个任务。
所有协程共享单线程事件循环,无线程开销。
无 GIL 瓶颈问题(因为单线程事件驱动)。
异步库性能上更接近 Go 的 goroutine 模型,但:
Go 的调度是多线程并行的;
asyncio 是单线程异步的。
4 小结
性能与扩展性对比
特性 Go (goroutines) Python ThreadPoolExecutor Python asyncio
并发机制 goroutine (轻量线程) OS 线程 单线程协程
调度模型 M:N 调度(多核并行) 1:1 线程调度(受 GIL 限制) 单线程事件循环
内存占用 ~2 KB/任务 ~8 MB/线程 ~几百字节/协程
I/O 密集型性能 极佳 良好 极佳
CPU 密集型性能 极佳(无 GIL) 较差(GIL 限制) 较差(单线程)
并发规模 上万 goroutine 无压力 上百线程会瓶颈 上万协程轻松支持
可扩展性 真正多核并行 受 GIL 限制 单核异步
Go 的 goroutine 模型 = 真并行 + 低开销;
Python 的 asyncio 模型 = 单线程 + 高并发 I/O。
二者都高效,但 Go 更适合 高并发、高吞吐的系统服务,Python 更适合 高延迟异步任务或快速开发脚本。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)