擅长:python、mysql、java
<p>CPython中多线程的最大问题是<a href="http://wiki.python.org/moin/GlobalInterpreterLock" rel="nofollow noreferrer">Global Interpreter Lock (GIL)</a>(请注意,其他Python实现<strong>不一定共享这个问题!)</p>
<p>GIL是一个实现细节,它有效地防止了Python中独立线程的并行执行。问题是,每当要执行Python字节码时,当前线程必须已获取GIL,并且在任何给定时刻只有单个线程可以拥有GIL。</p>
<p>因此,如果5个线程试图执行一些Python字节码,那么它们将有效地交错运行,因为每个线程都必须等待GIL可用。这通常不是单核计算机的问题,因为物理约束具有相同的效果:一次只能运行一个线程。</p>
<p>然而,在多核/SMP计算机中,这成为一个瓶颈。如今,几乎所有的东西都运行在多个内核上,包括所有智能手机,甚至许多嵌入式系统。</p>
<p>Java没有这样的限制,因此可以同时执行多个线程。</p>