5

我测试python套接字编程。并修改如下所示的选项在Mac中

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()**

增加filedescriptorselect ()函数怎么写?

4

1 回答 1

7

支持的文件描述符的数量是有限制的select()- 最简单的解决方案是简单地使用poll()代替,它不受此限制的影响。

严格来说,select()它可以支持的最高文件描述符受到限制,而不是给定调用中的数量 - 请参阅select() 手册页的注释部分的开头。我不确定OSX 上是什么,但在 Linux 上是 1024。没有实用的方法可以从 Python 增加这个限制。FD_SETSIZE

顺便说一句,如果你想保持可移植性,你可以考虑使用类似pyev的东西,它是一个 Python 包装器,libev它使用在给定平台上等待 IO 的最佳方法。

于 2013-01-10T04:45:37.287 回答