我编写了一个脚本,它使用两个线程池(每个线程池有 10 个线程)从 API 中提取数据。线程池实现this code on ActiveState .每个线程池都通过 PubSub 监控一个 Redis 数据库。对于新条目。发布新条目时,python 将数据传递给使用 python 的 Subprocess.POpen 的函数。执行一个 PHP shell 来完成调用 API 的实际工作。
这个启动 PHP shell 的系统对于我的 PHP Web 应用程序的功能是必要的,因此无法避免使用 Python 启动 PHP shell。
此脚本将仅在 Linux 服务器上运行。
如何控制niceness应用程序线程的(调度优先级)?
编辑:
在 Python 中控制单个线程的调度优先级似乎是不可能的。是否有 python 解决方案,或者至少我可以与脚本一起运行的 UNIX 命令来控制优先级?
编辑 2:
好吧,我最终没有找到处理它的 python 方法。我现在就像这样运行我的脚本:
nice -n 19 python MyScript.py
最佳答案
我相信线程优先级在 python 中是不可控的,因为它们是如何使用全局解释器锁 (GIL) 实现的。话虽如此,即使您可以给一个线程更多的 CPU 处理优先级,传递 GIL 的 python 实现在传递 GIL 时也不会意识到这一点。如果您能够提高池中单个线程的友好度(比如说它正在做一项更重要的工作),您将需要使用您自己的锁实现来让更高优先级的线程更频繁地访问 GIL。
谷歌搜索返回这篇文章,我认为它与您的要求相似
解释为什么它不起作用 http://www.velocityreviews.com/forums/t329441-threading-priority.html
解释我建议的解决方法 http://bytes.com/topic/python/answers/645966-setting-thread-priorities
关于python - 控制python线程的调度优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11421651/