5

Python ソケット プログラミングをテストします。以下に示すようにオプションを変更します

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 100000
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 709
virtual memory          (kbytes, -v) unlimited

しかし、次のエラーが発生しました。

Traceback (most recent call last):
  File "ssub.py", line 63, in createMqttClient
    rc = mqttc.loop()
  File "/Library/Python/2.7/site-packages/mosquitto.py", line 633, in loop
    socklist = select.select(rlist, wlist, [], timeout)
**ValueError: filedescriptor out of range in select()**

filedescriptor 関数の書き方を増やしselect ()ますか?

4

1 に答える 1

7

サポートするファイル記述子の数には制限がありますselect()。最も簡単な解決策は、代わりに単純にpoll()を使用することであり、この制限の影響を受けません。

厳密に言えば、select()指定された呼び出しでのファイル記述子の数とは対照的に、サポートできる最高のファイル記述子に制限されています - select() マンページの注記セクションの冒頭を参照してください。OSX では何があるかわかりませんが、Linux では 1024 です。Python からこの制限を増やす実用的な方法はありません。FD_SETSIZE

余談ですが、移植性を維持したい場合は、特定のプラットフォームでIOを待機する最適な方法を使用するライブラリのPythonラッパーであるpyevのようなものを使用することを検討してください。libev

于 2013-01-10T04:45:37.287 に答える