python批量解码工作用多线程可以显著提高速度吗?还是多进程?
疑问,比如有1w条crc32需要解码,
目前基本方案是从数据库中读取,解码后,写入新数据库。
考虑到是cpu密集型,网上有说法是多线程意义不大,
有点不知道该用哪种方案,还请大神指点 !
回答:
CPython
有 GIL
锁的存在,使得多线程只能并发而不能并行,也就意味着不能同时利用 CPU
的多个核心
比如你的 CPU
是 8 核心 16 线程的。CPython
的进程不管开 1 个线程还是 1000000 个线程,在同一时刻,只有一个 CPU 核心被利用。
你要利用 CPU 的多个核心一起干活就用 CPython
的多进程模型。
Python 提供了现成的进程池模型(multiprocessing --- 基于进程的并行),可以让使用者不需要关注 IPC 即可简单无脑的利用多进程来完成一些计算
或者把 CPython
换成 pypy
当然,最好用 c
、 c++
、 rust
、 golang
等高性能编译语言去做这件事情。
回答:
多进程是可以利用多核资源的
以上是 python批量解码工作用多线程可以显著提高速度吗?还是多进程? 的全部内容, 来源链接: utcz.com/p/938234.html