2009-07-24 66 views
4

HI我寫了一個python程序,當我打開太多tempfile時,我會得到一個異常:太多的打開的文件... 然後我找出那個Windows操作系統或C運行時具有文件句柄限制,所以,我使用StringIO()更改我的程序,但仍不知道StringIO是否也受限制?Python-關於OS上的文件句柄限制

回答

7

Python的StringIO不使用OS文件句柄,所以它不會受到相同的限制。 StringIO將受到可用虛擬內存的限制,但您可能已經獲得了大量可用內存。

通常情況下,操作系統允許單個進程在運行到極限之前打開數千個文件,因此如果您的程序用完了文件句柄,您可能會忘記關閉它們。當然,除非你打算打開數千個文件,並且真的已經用完了。

+0

哦,謝謝幸運星 該程序是多線程作爲消息服務器,所以有些線程將消息放入隊列中,其他線程將它們從隊列中取出。 由於使用文件句柄(在內存不足的情況下,我首先選擇文件句柄),但是如果隊列中有太多消息,意味着程序打開的文件句柄過多,則會出現異常。因此,如果的,我認爲處理這個問題的唯一方法是使用StringIO(),而不是文件句柄.... 希望我的老闆願意爲它購買更多的內存...... :) – Ryan 2009-07-24 12:19:20