我解析一个大的源代码目录(100k 文件)。我遍历每个文件中的每一行并进行一些简单的正则表达式匹配。我尝试将此任务线程化到多个线程,但没有获得任何加速。只有多处理才能将时间缩短 70%。我知道 GIL 死亡之握,但是线程不应该帮助 IO 绑定(bind)访问吗?
如果磁盘访问是串行的,为什么多个进程可以更快地完成工作?
最佳答案
Python“线程”允许独立的执行线程,但通常不允许并发,因为全局解释器锁:一次只能有一个线程真正运行。这可能就是为什么您只能通过多个进程获得加速的原因,这些进程不共享全局解释器锁,因此可以并发运行。
关于python:磁盘绑定(bind)任务、线程与进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44727134/