Python 为什么线程比子进程慢?什么时候我应该使用子进程代替线程,反之亦然
在我的应用程序中,我尝试了python线程和子进程模块来打开firefox,我注意到子进程比线程更快。这背后的原因可能是什么 何时使用它们来代替彼此?Python(或者更确切地说,是一种常用的基于c的实现)有一个全局Intepreter锁(也称GIL) 当多个线程访问同一内存时,需要某种类型的锁定来同步内存访问,这是进程内部发生的事情。进程之间不共享内存(除非您专门分配这样的内存),因此不需要锁 锁的全局性防止多个线程在同一进程中运行python代码。当运行多个进程时,GIL不会干扰 因此,Python代码不会在线程上进行扩展,您需要相应的进程 现在,如果您的Python代码主要是调用C-API(NumPy/OpenGL/etc),那么会有伸缩性,因为GIL通常是在执行本机代码时发布的,所以使用Python来管理几个主要执行本机代码的线程是可以的(实际上是个好主意) (还有其他的Python解释器实现可以跨线程扩展(如Jython、IronPython等),但它们并不是真正的主流,而且在单线程场景中通常比CPython慢一点。)Python 为什么线程比子进程慢?什么时候我应该使用子进程代替线程,反之亦然,python,multithreading,subprocess,Python,Multithreading,Subprocess,在我的应用程序中,我尝试了python线程和子进程模块来打开firefox,我注意到子进程比线程更快。这背后的原因可能是什么 何时使用它们来代替彼此?Python(或者更确切地说,是一种常用的基于c的实现)有一个全局Intepreter锁(也称GIL) 当多个线程访问同一内存时,需要某种类型的锁定来同步内存访问,这是进程内部发生的事情。进程之间不共享内存(除非您专门分配这样的内存),因此不需要锁 锁的全局性防止多个线程在同一进程中运行python代码。当运行多个进程时,GIL不会干扰 因此,Py