2014-12-03 763 views
0

我想知道如何更改Windows中打開文件的最大數量。類似於unix下的ulimit命令。在我的c:\ windows \ system32下,我無法找到CONFIG.NT文件,因此更改CONFIG.NT文件中的文件號對我無效。更改Windows中打開文件的最大數量

問題是我寫了一個python腳本,其中我需要調用subprocess.Popen(cmd,stdout = sp.PIPE,stdin = sp.PIPE,shell = True)256或512次。這意味着我需要啓動256或512個後臺進程。只要啓動的進程數小於255,腳本就可以正常工作。

+0

據我所知,沒有任何固定的最大值。無論出錯,這可能不是原因。 – 2014-12-03 23:38:32

+0

你面臨什麼問題?這聽起來不像你提出了正確的解決方案。 – 2014-12-04 12:20:08

+0

聽起來像Python中的限制。 Windows中沒有任何內容可能會對子進程的數量施加一個字節的限制 - 儘管您應該注意到Windows可能無法在同時運行的許多進程中運行良好。 – 2014-12-06 22:48:26

回答

0

一般情況下,Windows對文件沒有上限;正是你可以在內存中管理的東西。

我認爲你會發現有用:Russinvich's discussion of Windows handle resource limits有用。

我們構建並行程序,可以處理數千個文件。儘管有這些說法,但當我們嘗試打開(並同時保持打開)數千個文件時,我們似乎遇到了資源限制。

我們發現將打開的數量限制在幾百個是有用的。這似乎並未影響性能,遠超過推動限制。這很容易通過並行應用程序中的計數信號管理。

+0

問題是我寫了一個python腳本,其中我需要調用subprocess.Popen(cmd,stdout = sp.PIPE,stdin = sp.PIPE,shell = True)256或512次。這意味着我需要啓動256或512個後臺進程。每當啓動的進程數小於255時,該腳本就可以正常工作。 – diane 2014-12-04 15:24:50

+0

那麼,爲什麼問你這個問題? – 2014-12-04 21:15:13

0

這是一個老問題,但我會貢獻。有一個限制,但它不是每個子進程的限制。 Python在每個子流程中打開每個管道的文件描述符。你的代碼破解爲255,因爲Window具有512個打開文件描述符的默認限制(非常接近2個管道×255個子進程)。

查看該問題的回答3:Why python has limit for count of file handles?。這個答案顯示瞭如何增加Window的默認限制。您可以將打開限制更改爲每個Windows限制最多2048個。

相關問題