神龙论坛
登录
快速注册
首页
v2ex精选
发新帖
Python asyncio 中怎么执行 cpu 密集型任务?
gosky
2024-07-23 12:57
0
理论上讲,两个办法:
一、多线程,但不知道怎么全局解释锁被优化得怎么样
二、多进程,消耗更多内存,因为需要加载模型,内存复制必须要考虑。多进程管理是个麻烦,启动耗时也得考虑
期望有个轻量级的开源程序,轻松完成这个活……
上一篇:
杭州有哪些适合晚上下班去逛逛的地方
下一篇:
请教在 ubuntu23 中如何 让 Django runserver 开机自启动
最新回复
(
9
)
changz
4月前
引用
2
楼
多线程+c/c++ ffi
gaogang
4月前
引用
3
楼
cpu 密集的任务 用其他合适的语言实现
然后通过 rpc 暴露出来 正好给 python 的 asyncio 调
lambdaq
4月前
引用
4
楼
asyncio 顾名思义是 异步 io 。。。众所周知,py 要么卡 cpu 要么卡 io ,asyncio 只解决卡 io 的问题啊。
fuis
4月前
引用
5
楼
https://docs.python.org/3/library/concurrent.futures.html
ysn2233
4月前
引用
6
楼
用 c/c++/rust 的 ffi 做 binding 吧,实在不行 java/go 什么的也行,python 就做个前端调一下
mirrornighth
4月前
引用
7
楼
多进程
ipwx
4月前
引用
8
楼
“因为需要加载模型,内存复制必须要考虑。”
你是啥模型。有些模型开多线程是可以并行的。
Goooooos
4月前
引用
9
楼
python 3.13 可以加个参数去掉 GIL
guochao
4月前
引用
10
楼
针对锁和 python 效率的问题:
- 如果你的计算任务可以用 c/rust 的模块,最好是在 c/rust 的部分处理,最好能批处理
- 如果是 pure python ,也许可以试试 taichi 或者类似的东西。因为 python 可以被再次编译成 native 或者 gpu kernel ,并针对架构优化
针对 asyncio 只管异步切换,计算存在长时间阻塞的问题
- (不同进程、单独服务的方案)要么 celery ,或者自己搓一个简单的队列
- (简单在同一个进程中的方案)要么 thread pool executor
回复请
登录
or
快速注册
返回
gosky