python:磁盘绑定(bind)任务、线程与进程

标签 python multithreading multiprocessing

我解析一个大的源代码目录(100k 文件)。我遍历每个文件中的每一行并进行一些简单的正则表达式匹配。我尝试将此任务线程化到多个线程,但没有获得任何加速。只有多处理才能将时间缩短 70%。我知道 GIL 死亡之握,但是线程不应该帮助 IO 绑定(bind)访问吗?

如果磁盘访问是串行的,为什么多个进程可以更快地完成工作?

最佳答案

Python“线程”允许独立的执行线程,但通常不允许并发,因为全局解释器锁:一次只能有一个线程真正运行。这可能就是为什么您只能通过多个进程获得加速的原因,这些进程不共享全局解释器锁,因此可以并发运行。

关于python:磁盘绑定(bind)任务、线程与进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44727134/

相关文章:

Java:多线程安全问题:使用Thread extends和Lock

python - 使用 Xarray 和 Numpy 数组进行多处理

python - Tkinter 进度条如何在模型对话框中正确实现

python - 将 python 函数列表异步应用于单个参数

python - Pandas:包含对列表的列

c++ - Boost线程,如何检查线程是否仍在运行?

java - 在这种高流量的多线程场景中,我应该使用 ThreadLocal 吗?

python - Django-Haystack + Whoosh - 是否可能出现拼写错误建议?

python - 创建一个 RPG 游戏宝箱

python - Python 中的 "name S_ISREG is not defined"