您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

我如何限制Python线程?

5b51 2022/1/14 8:21:13 python 字数 2206 阅读 473 来源 www.jb51.cc/python

我有一个线程做了很多CPU密集型处理,这似乎阻止了其他线程.我该如何限制它?这是针对web2py的,但一般解决方案没问题.最佳答案我不久前刚刚结束这个问题,你不能改变线程的优先级,但有办法解决这个问题.为了给你一些关于这个问题的背景知识,在cPython实现中,由于Global Interpreter Lock或GIL的发布和获取方式,CPU绑定线程会导致其

概述

我有一个线程做了很多cpu密集型处理,这似乎阻止了其他线程.我该如何限制它?

这是针对web2py的,但一般解决方案没问题.

为了给你一些关于这个问题的背景知识,在cPython实现中,由于Global Interpreter Lock或GIL的发布和获取方式,cpu绑定线程会导致其他线程饿死.奇怪的是,这个问题在多核环境中变得更糟.关于这个问题的一个非常详细的分析和介绍是在David Beazley完成的,您可以在http://www.dabeaz.com/python/GIL.pdf找到它.他有几篇博文更详细.它们很长但很吸引人.

简短的版本是cpu绑定线程释放并重新获取GIL,然后才能唤醒其他线程以获取它.导致持有GIL的cpu绑定线程超过90%的时间.

您可以使用一些模式来解决此问题.例如,您可以在完全不同的过程中运行cpu绑定任务.这将允许操作系统调度程序更好地管理资源共享,并且应该允许您的web2py线程继续运行,因为操作系统实际上对IO绑定线程给予优先处理. multiprocessing库是为此类案例提供的.它需要更多代码才能使其正常工作,但这应该有所帮助.

总结

以上是编程之家为你收集整理的我如何限制Python线程?全部内容,希望文章能够帮你解决我如何限制Python线程?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶