python批量解码工作用多线程可以显著提高速度吗?还是多进程?

python批量解码工作用多线程可以显著提高速度吗?还是多进程?

疑问,比如有1w条crc32需要解码,

目前基本方案是从数据库中读取,解码后,写入新数据库。

考虑到是cpu密集型,网上有说法是多线程意义不大,

有点不知道该用哪种方案,还请大神指点 !


回答:

CPythonGIL 锁的存在,使得多线程只能并发而不能并行,也就意味着不能同时利用 CPU
的多个核心

比如你的 CPU 是 8 核心 16 线程的。CPython 的进程不管开 1 个线程还是 1000000 个线程,在同一时刻,只有一个 CPU 核心被利用。

你要利用 CPU 的多个核心一起干活就用 CPython 的多进程模型。

Python 提供了现成的进程池模型(multiprocessing --- 基于进程的并行),可以让使用者不需要关注 IPC 即可简单无脑的利用多进程来完成一些计算

或者把 CPython 换成 pypy

当然,最好用 cc++rustgolang 等高性能编译语言去做这件事情。


回答:

多进程是可以利用多核资源的

以上是 python批量解码工作用多线程可以显著提高速度吗?还是多进程? 的全部内容, 来源链接: utcz.com/p/938234.html

回到顶部