明天我需要编写一个线程程序,从一些src文件读取所有行,执行一些网络绑定I / O进程,然后将输出写入dest文件。我担心两个(或更多)线程可能会同时尝试写入磁盘,因此,我会有混乱/损坏的数据。
这是我甚至需要担心的吗?我以前从未在生活中多线索过任何东西。在这种情况下,全局解释器锁(GIL)是否会有效地保护我? (我之所以这样做是因为单线程实现需要30天)。
非常感谢
答案 0 :(得分:0)
您的程序是否真的需要进行I / O多线程?如果你正在读/写一个文件,我会把程序的那部分单线程 - 它会更快,你可以避免锁定问题。更不用说光盘i / o速度太慢以至于parallen进程对你没有什么帮助。 我为您看到两种可能的情况: 1.单个文件:在一个线程中执行i / o,启动N个进程来执行繁重的计算。 2. N个文件:启动一个管理队列的线程,然后启动N个进程来完成工作。
请参阅https://docs.python.org/2/library/multiprocessing.html了解“游泳池”,这可能对您的情况非常有帮助。
作为建议:多线程很难受。当您从单线程切换到多线程时,很多事情会以不同的方式出错。因此,从一个简单的单线程模型开始,逐步建立并确保每个步骤仍然正确。