我一直在努力地研究线程在Python中的工作方式,很难找到关于它们如何运行的良好信息。我可能只是缺少链接之类的东西,但是官方文档似乎对该主题并不十分详尽,而且我也找不到很好的文章。
据我所知,一次只能运行一个线程,活动线程每10条指令左右切换一次?
哪里有很好的解释,或者您可以提供一个解释?知道在Python中使用线程时遇到的常见问题也将非常高兴。
是的,由于全局解释器锁定(GIL),一次只能运行一个线程。以下是一些有关此方面的见解的链接:
在最后一个链接中有一个有趣的报价:
让我解释一下这一切的含义。线程在同一虚拟机内运行,因此在同一物理机上运行。进程可以在同一台物理计算机上运行,也可以在另一台物理计算机上运行。如果您围绕线程构建应用程序,则您无济于事可访问多台计算机。因此,您可以扩展到一台计算机上的多个内核(随着时间的推移,内核数量会增加很多),但是要真正达到Web规模,则无论如何都需要解决多计算机问题。
如果要使用多核,则pyprocessing定义基于进程的API来进行真正的并行化。该PEP还包括了一些有趣的基准。