Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python select()中增加filedescriptor的范围_Python_Sockets_Select_File Descriptor - Fatal编程技术网

如何在python select()中增加filedescriptor的范围

如何在python select()中增加filedescriptor的范围,python,sockets,select,file-descriptor,Python,Sockets,Select,File Descriptor,我测试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) un

我测试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
但是发生了以下错误


增加filedescriptor如何编写选择函数?

select支持的文件描述符的数量有一个限制-最简单的解决方案是直接使用,而不受此限制

严格地说,select仅限于它所能支持的最高文件描述符,而不是给定调用中的文件描述符数量—请参阅本部分Notes部分的开头。我不确定OSX上的FD_设置大小是多少,但在Linux上是1024。没有实用的方法可以从Python中增加这个限制


作为一个旁白,如果你想让事物保持便携性,你可以考虑使用一个类似于Python包装的东西,它在给定平台上使用等待IO的最优方法。

注释:在Windows下,限制是不同的——在Windows下,它是描述符的数量,不是最大描述符的值,这很重要。啊,是的,很好。想一想,我不完全确定是否有办法改变对窗户的限制,但我不知道有什么办法。这可能很方便,因为我不相信poll在Windows上可用。现代版本的Windows确实有WSAPoll,这或多或少与poll相同……使用它可以了解,但必须将任何特定于操作系统的代码放入Python应用程序中是令人恼火的,尽管我确实意识到这有时是不可避免的。除非您的意思是Python的select模块已经更新为使用WSAPoll?我自己还没有测试过它,但希望Python的select.poll方法能够在具有WSAPoll的Windows版本上调用WSAPoll。。。
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()**