我测试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()**
增加文件描述符如何写select ()
函数?
select()
支持的文件描述符的数量是有限制的——最简单的解决方案是简单地使用poll()代替,它不受此限制。
严格地说,select()
被限制在它可以支持的最高文件描述符中,而不是在给定的调用中它们的数量-参见select()手册的Notes部分的开始。我不确定FD_SETSIZE
在OSX上是什么,但在Linux上是1024。在Python中没有实际的方法来增加这个限制。
作为题外话,如果你想保持东西的可移植性,你可以考虑使用类似pyev的东西,这是一个围绕libev
库的Python包装器,它使用在给定平台上等待IO的最佳方法。