控制python线程的调度优先级?
我编写了一个脚本,它使用两个线程池(每个线程包含10个线程)从API中提取数据。线程池实现。每个线程池都通过监视Redis数据库以查找新条目。当发布一个新条目时,python将数据传递给一个函数,该函数使用python执行一个PHP shell来执行调用API的实际工作 这个启动PHP shell的系统对于我的PHP web应用程序的功能是必需的,因此无法避免使用Python启动PHP shell 此脚本将仅在Linux服务器上运行 如何控制应用程序线程的(调度优先级) 编辑: 在Python中控制单个线程的调度优先级似乎是不可能的。是否有python解决方案,或者至少有一个UNIX命令可以与脚本一起运行来控制优先级 编辑2: 我没有找到python的方法来处理它。我现在正在用nice运行脚本,如下所示:控制python线程的调度优先级?,python,multithreading,threadpool,scheduling,nice,Python,Multithreading,Threadpool,Scheduling,Nice,我编写了一个脚本,它使用两个线程池(每个线程包含10个线程)从API中提取数据。线程池实现。每个线程池都通过监视Redis数据库以查找新条目。当发布一个新条目时,python将数据传递给一个函数,该函数使用python执行一个PHP shell来执行调用API的实际工作 这个启动PHP shell的系统对于我的PHP web应用程序的功能是必需的,因此无法避免使用Python启动PHP shell 此脚本将仅在Linux服务器上运行 如何控制应用程序线程的(调度优先级) 编辑: 在Python中
nice -n 19 python MyScript.py
我相信线程优先级在python中是不可控的,因为它们是如何使用全局解释器锁(GIL)实现的。话虽如此,即使您可以给一个线程更多的CPU处理优先级,但在交付GIL时,交付GIL的python实现也不会意识到这一点。如果您能够在池中的单个线程中增加精确性(比如说它正在做一项更重要的工作),那么您需要使用自己的锁实现来更频繁地让优先级更高的线程访问GIL 谷歌搜索会返回这篇文章,我相信这篇文章与你所问的内容类似 解释了为什么它不起作用 解释了我建议的解决方法 我想知道在这种情况下是否有用?()
由于您已经在使用启动PHP脚本,我觉得您可以使用“preexec_fn”和预定义函数或lambda函数(如上面链接的答案所示)来设置每个启动的PHP线程的良好级别?我知道,已经过了很多时间,但我最近遇到了这个问题,我认为添加另一个选项会很有用
看一看,这是默认线程模块的替换和扩展,支持优先级和亲和力。不起作用,但我尝试了:
谢谢你的回答!我已经重新表述了现在的问题,即如何为整个应用程序而不是单个应用程序设置计划优先级。那应该能满足我的需要。我已经对您的回复进行了投票,如果没有其他回复,我会选择您作为最佳答案。该回复现在未维护,有一个链接指向:(