我一直在尝试了解线程在 Python 中的工作原理,但很难找到有关它们如何运行的良好信息。我可能只是缺少一个链接或其他东西,但官方文档似乎在这个主题上不是很详尽,而且我还没有找到好的文章。
据我所知,一次只能运行一个线程,并且活动线程每 10 条指令左右切换一次?
哪里有好的解释,或者可以提供一下吗?如果能够了解在 Python 中使用线程时遇到的常见问题,那就太好了。
是的,由于全局解释器锁(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/
从最后一个链接引用了一段有趣的内容:
让我解释一下这一切意味着什么。
线程在同一个虚拟机内运行
机器,因此在同一台机器上运行
物理机。进程可以运行
在同一台物理机器上或在
另一台物理机。如果你
围绕以下内容构建您的应用程序
线程,您没有执行任何操作来访问
多台机器。所以,你可以扩展
单个核心数量尽可能多
机器(这将是相当多的
随着时间的推移),但要真正到达网络
规模,你需要解决
无论如何,多机问题。
如果你想使用多核,py处理定义一个基于流程的 API 来进行真正的并行化。这PEP还包括一些有趣的基准。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)