0

Python でソケットに関連付けられたファイル記述子を手動で作成し、mmap でメモリに直接ロードしようとしています。mmap を使用してファイルをメモリに作成するのは簡単ですが、ファイルをソケットに関連付ける方法が見つかりません。


ご回答ありがとうございます。

私が抱えている問題は、Python (またはオペレーティング システム) 用のソケットをこれ以上作成できないことです。「[errno 24] 開いているファイルが多すぎます」というエラーが表示されます。

エラーは、ディスク上にこれ以上ファイル記述子を作成できないためだと思うので、メモリ内に作成したいと思います。この制限を回避するには.

助言がありますか?

4

2 に答える 2

1

なぜmmapを使用してこれをメモリにロードしたいのですか?UNIXバリアントを使用している場合は、他のソケットと同じように使用できるファイル記述子であるUNIXソケットを作成できます。ソケットとメモリマップトファイルは2つの別個のエンティティであり、それらを混合してみるのはおそらく良い考えではありません。

おそらく、一歩下がって、より高いレベルで何をしようとしているのかを話し合うことが役立つでしょう。

于 2010-05-27T15:45:39.017 に答える
0

私があなたの質問を王室で誤解している可能性は十分にあります。Pythonソケットオブジェクトを作成したい既存のソケットファイルがあると言っていますか?その場合socket.fromfd()、fdを複製し、ソケットオブジェクトを作成します。

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

ダニの投稿に対処するために編集

ファイル記述子がどのように機能するかを誤解していると思います。OSによって設定された制限があります。これはFDが指しているものとは何の関係もないので、mmapはここでは役に立ちません(ソケットもディスク上にありません)。あなたはおそらくより良いファイル管理をする必要があります-あなたがそれらを使い終わったらファイルを閉じてください。

本当に厳しい要件がある場合は、オープンFDの制限を増やす必要があります。このブログ投稿resourceには、モジュール(* NIXのみ)を使用してオープンファイルの制限を取得および設定する優れた例があります。getrlimitのマニュアルページには、その使用法に関する詳細情報があります。

于 2010-05-27T15:46:14.197 に答える