I know about os.nice()
it works perfect for parent process, but I need to do renice of my child subprocesses. I found way to do this, but it seems to be not very handy and too excessive:
os.system("renice -n %d %d" % ( new_nice, suprocess.pid ) )
And it isn't return resulting nice level after renicing.
Is there more clean way to renice subprocesses in python?
Use the preexec_fn
parameter of subprocess.Popen
:
If
preexec_fn
is set to a callable object, this object will be called in the child process just before the child is executed. (Unix only)
Example:
>>> Popen(["nice"]).communicate()
0
(None, None)
>>> Popen(["nice"], preexec_fn=lambda : os.nice(10)).communicate()
10
(None, None)
>>> Popen(["nice"], preexec_fn=lambda : os.nice(20)).communicate()
19
(None, None)