我测试 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() manpage 的 Notes 部分的开头.我不确定是什么FD_SETSIZE
在 OSX 上是 1024,但在 Linux 上是 1024。没有实际的方法可以从 Python 增加这个限制。
顺便说一句,如果您想保持便携性,您可以考虑使用类似 pyev 的东西这是 libev
的 Python 包装器在给定平台上使用最佳等待 IO 方法的库。
关于python - 如何在 python select() 中增加文件描述符的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14250751/