2010-05-27 71 views
0

我試圖手動創建與python中的套接字關聯的文件描述符,然後直接使用mmap將其加載到內存中。使用mmap將文件創建到內存很簡單,但我找不到將文件與套接字關聯的方法。在python中更改套接字的文件描述符


感謝您的回覆。

我的問題是我無法爲python(或操作系統)製作更多的套接字我得到錯誤:「[errno 24]打開的文件過多」。

我認爲錯誤是因爲我無法在磁盤上創建更多文件描述符,所以我想在內存中創建它們。爲了避免這種限制。

有什麼建議嗎?

回答

1

爲什麼你要使用mmap加載到內存中?如果你使用的是unix版本,你可以創建一個unix套接字,它是一個文件描述符,可以像其他套接字一樣使用。套接字和內存映射文件是兩個不同的實體 - 嘗試混合它們可能不是一個好主意。

也許這會有所幫助,退後一步,討論您在較高級別嘗試做什麼。

0

我極有可能會嚴重誤解您的問題。你是否說有一個你想創建一個Python套接字對象的現有套接字文件?如果是這樣,socket.fromfd()將複製fd並創建一個套接字對象。

http://docs.python.org/library/socket.html#socket.fromfd

編輯解決丹妮的職位

我想你誤會文件描述符是如何工作的。 OS設置了一個限制。這與FD所指向的無關,所以mmap在這裏不會幫助你(套接字不在磁盤上)。你可能只需要做更好的文件管理 - 當你完成它們時關閉文件。

如果您剛剛有確實需要,您可能需要增加開放FD的限制。這blog post有一個很好的例子,使用resource模塊(* NIX-only)獲取和設置打開的文件限制。 getrlimit man page有更多的使用信息。

相關問題