2012-06-05 49 views
10

Python的resource模塊和POSIX setrlimit在Unix系統上公開的資源限制機制的等效物是什麼?Windows上的資源限制?

具體而言,我限制性處理器時間子進程到幾秒鐘。如果它沒有在限制內完成,則會被終止。

+0

據我所知,它在Windows中不存在。您可能會得到最接近的工作(在Windows 2000中引入),您可以從您自己的流程中進行控制。不過,SUS定義的資源限制在Windows中並不存在。 – 0xC0000022L

+0

順便說一句:看看Process Lasso。這可能部分是你感興趣的部分。問題是它是否提供了你所需要的全部... – 0xC0000022L

回答

2

據我所知,有閒逛的處理器時間由Python中的子進程使用量的信息沒有可移植的方法。但subprocess模塊的功能是什麼(假設您正在啓動subprocess.Popen,建議您使用該子模塊),您可以在Popen.pid中看到子進程的進程ID。您可以在Windows上執行的操作是使用subprocess.check_output反覆運行tasklist(請參閱manual),並使用PID作爲過濾器從其輸出中提取有關子進程的信息。

只要子進程有足夠的CPU時間,並且您使用subprocess.Popen()來啓動子進程,則可以使用Popen.kill方法來終止它。

但我想用一個定時器的掛鐘時間指定的秒數後後它會更容易殺死子進程。因爲如果子進程沒有使用CPU時間而掛起(無論出於何種原因),那麼您的python程序會等待它耗費CPU時間。