有没有办法给Python脚本的方法加上"nice"?
我的脚本有很多部分,但只有其中一些需要设置为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.
注意事项:
- 在我的电脑上可以用,不确定这个 os.nice 在其他地方是否也能用。
- 正如下面提到的,它是否有效可能取决于你的操作系统或发行版,或者是否有管理员权限。
- 优先级是针对每个进程的。对于每个进程有多个线程的情况,可能会出现不正常的行为,甚至可能导致崩溃。