擅长:python、mysql、java
<p>关于您的第二个问题,Python中线程和进程之间的最大区别是主流实现使用全局解释器锁(globalinterpretor lock,GIL),以确保多个线程不会扰乱Python的内部数据结构。这意味着,对于那些大部分时间都用纯Python进行计算的程序来说,即使有多个cpu,也不会使程序的速度提高很多,因为一次只有一个线程可以保持GIL。另一方面,在Python程序中,多个线程可以简单地共享数据,在某些情况下(但并非全部),您不必太担心线程安全性。在</p>
<p>多线程可以加速Python程序的地方是程序将大部分时间花在等待I/O磁盘访问,或者特别是现在的网络操作上。GIL不是在执行I/O时保持的,因此许多Python线程可以在I/O绑定的应用程序中并发运行。在</p>
<p>另一方面,对于多处理,每个进程都有自己的GIL,因此您的性能可以根据可用的CPU核数量进行调整。缺点是进程之间的所有通信都必须通过多处理队列(在表面上的作用很像排队。排队,但有着非常不同的底层机制,因为它必须跨进程边界进行通信)。在</p>
<p>由于处理线程安全或进程间队列可以避免许多潜在的线程问题,而且由于Python使其非常简单,<code>multiprocessing</code>模块非常有吸引力。在</p>