有没有一种方法可以;“尼斯”;Python脚本的一种方法
我的脚本有多个组件,只有一些部分需要是有没有一种方法可以;“尼斯”;Python脚本的一种方法,python,linux,scheduling,nice,Python,Linux,Scheduling,Nice,我的脚本有多个组件,只有一些部分需要是nice-d。i、 例如,以低优先级运行 有没有办法只使用Python的一种方法,或者我需要把它分解成几个进程 我正在使用Linux,如果这很重要的话。您可以编写一个decorator,在进入和退出时重新激活正在运行的进程: import os import functools def low_priority(f): @functools.wraps(f) def reniced(*args, **kwargs): os.
nice
-d。i、 例如,以低优先级运行
有没有办法只使用Python的一种方法,或者我需要把它分解成几个进程
我正在使用Linux,如果这很重要的话。您可以编写一个decorator,在进入和退出时重新激活正在运行的进程:
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.
免责声明:
进程优先级是由操作系统管理的,所以我很确定您要么使用
子进程
,要么执行某种系统,让脚本找到自己的进程并动态更改其优先级。当然,更好的问题是,是否有任何部分真的需要以高优先级运行,或者您可以以低优先级运行整个过程。这只能作为根运行。普通用户是不允许取消进程的尼斯的,即使他们是那个尼斯它。@另一个家伙,我不确定这是真的,我现在正在运行它,它似乎工作得很好。ArchLinux,非根目录。也许这是一个依赖于分布的东西?不应该。也许你不知何故获得了CAP_SYS_NICE?sudo-u-python-c是否导入操作系统;os.nice(5);很好(-5);'代码>工作?是的。不知道为什么这里不同。执行相反的操作(降低,然后升高)会导致异常。