有没有办法给Python脚本的方法加上"nice"?

4 投票
1 回答
1704 浏览
提问于 2025-04-17 13:43

我的脚本有很多部分,但只有其中一些需要设置为nice,也就是以低优先级运行。

有没有办法只对Python中的一个方法使用nice,还是说我需要把它拆分成几个进程来做?

我在使用Linux,如果这有影响的话。

1 个回答

7

你可以写一个装饰器,在程序开始和结束时调整正在运行的进程的优先级:

import os
import functools

def low_priority(f):
    @functools.wraps(f)
    def reniced(*args, **kwargs):
        os.nice(5)
        try:
            f(*args,**kwargs)
        finally:
            os.nice(-5)
    return reniced

然后你可以这样使用它:

@low_priority
def test():
    pass # Or whatever you want to do.

注意事项:

  1. 在我的电脑上可以用,不确定这个 os.nice 在其他地方是否也能用。
  2. 正如下面提到的,它是否有效可能取决于你的操作系统或发行版,或者是否有管理员权限。
  3. 优先级是针对每个进程的。对于每个进程有多个线程的情况,可能会出现不正常的行为,甚至可能导致崩溃。

撰写回答