実行時間の長いプログラムが開始したら、その優先度を下げて、実行するマシンで利用可能なすべてのリソースを消費しないようにしたいと考えています。状況により、プログラムがそれ自体を制限することが必要になります。
プログラムが実行されているコンピューターの全容量を利用しないように使用できる、素敵な python-command はありますか?
でいつでもプロセスを実行できますnice pythonscript
。
ただし、スクリプト内でナイス レベルを設定する場合は、次のようにします。
import os
os.nice(20)
スクリプトの実行時間が長くなるにつれてナイス レベルを段階的に増加させることができるため、時間が経つにつれて使用するリソースが少なくなります。これは、スクリプトに統合するという簡単な問題です。
または、スクリプトの外部から、スクリプトが実行されたら、使用できるはずですrenice -p <pid>
psutilは、Pythonのプロセス優先度を設定するためのクロスプラットフォームソリューションのようです。
https://github.com/giampaolo/psutil
Windows固有のソリューション:http ://code.activestate.com/recipes/496767/
def setpriority(pid=None,priority=1):
""" Set The Priority of a Windows Process. Priority is a value between 0-5 where
2 is normal priority. Default sets the priority of the current
python process but can take any valid process ID. """
import win32api,win32process,win32con
priorityclasses = [win32process.IDLE_PRIORITY_CLASS,
win32process.BELOW_NORMAL_PRIORITY_CLASS,
win32process.NORMAL_PRIORITY_CLASS,
win32process.ABOVE_NORMAL_PRIORITY_CLASS,
win32process.HIGH_PRIORITY_CLASS,
win32process.REALTIME_PRIORITY_CLASS]
if pid == None:
pid = win32api.GetCurrentProcessId()
handle = win32api.OpenProcess(win32con.PROCESS_ALL_ACCESS, True, pid)
win32process.SetPriorityClass(handle, priorityclasses[priority])