在Python中混合使用Multiprocessing和Threading模块有什么原因吗
我在考虑用Python来实现一个程序,这个程序需要大量的多线程。还有一个要求是它要在桌面上运行,所以如果有很多进程,应用程序看起来会很乱,而且在任务管理器中也更难关闭。因此,我在考虑同时使用Threading和Multiprocessing这两个模块,以减少进程的数量。根据我的理解,GIL(全局解释器锁)只会作用于单个进程。我的问题是:有没有什么理由不把这两个模块混合使用?
2 个回答
1
除了基本的KISS原则(保持简单,别复杂)之外,尽管去做吧,应该不会有什么问题。
5
注意:这个警告在Windows系统上不适用。
要小心!在使用线程和多进程结合时,锁的使用会出现一个很麻烦的bug,尤其是在使用日志模块的时候。我最近一周就遇到了这个问题,子进程有时会卡住。现在我禁用了日志功能,情况暂时还不错(虽然这不是最好的解决办法!)。
https://twiki.cern.ch/twiki/bin/view/Main/PythonLoggingThreadingMultiprocessingIntermixedStudy