是的,由于全局解释器锁定(GIL),一次只能运行一个线程。以下是一些有关此方面的见解的链接:
- http://www.artima.com/weblogs/viewpost.jsp?thread=214235
- http://smoothspan.wordpress.com/2007/09/14/guido-is-right-to-leave-the-gil-in-python-not-for-multicore-but-for-utility-computing/
在最后一个链接中有一个有趣的报价:
让我解释一下这一切的含义。线程在同一虚拟机内运行,因此在同一物理机上运行。进程可以在同一台物理计算机上运行,也可以在另一台物理计算机上运行。如果您围绕线程构建应用程序,则您无济于事可访问多台计算机。因此,您可以扩展到一台计算机上的多个内核(随着时间的推移,内核数量会增加很多),但是要真正达到Web规模,则无论如何都需要解决多计算机问题。
如果要使用多核,则pyprocessing定义基于进程的API来进行真正的并行化。该PEP还包括了一些有趣的基准。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)