14

実行時間の長いプログラムが開始したら、その優先度を下げて、実行するマシンで利用可能なすべてのリソースを消費しないようにしたいと考えています。状況により、プログラムがそれ自体を制限することが必要になります。

プログラムが実行されているコンピューターの全容量を利用しないように使用できる、素敵な python-command はありますか?

4

2 に答える 2

25

でいつでもプロセスを実行できますnice pythonscript

ただし、スクリプト内でナイス レベルを設定する場合は、次のようにします。

import os
os.nice(20)

スクリプトの実行時間が長くなるにつれてナイス レベルを段階的に増加させることができるため、時間が経つにつれて使用するリソースが少なくなります。これは、スクリプトに統合するという簡単な問題です。

または、スクリプトの外部から、スクリプトが実行されたら、使用できるはずですrenice -p <pid>

于 2012-12-18T16:24:13.913 に答える
7

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])
于 2012-12-18T16:26:58.923 に答える