有没有办法“很好”的Python脚本方法

时间:2013-01-26 04:08:49

标签: python linux scheduling nice

我的脚本有多个组件,只有一些部分需要nice - d。即,以低优先级运行。

有没有办法nice只有一种Python方法,或者我需要将其分解为多个进程?

如果重要的话,我正在使用Linux。

1 个答案:

答案 0 :(得分:6)

您可以编写一个装饰器,在进入和退出时重新运行正在运行的进程:

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. 如下所述,它是否有效可能取决于您的操作系统/发行版或成为root用户。
  3. Nice是基于每个进程的。每个进程有多个线程的行为可能不会理智,并且可能会崩溃。