相关疑难解决方法(0)

Snow Leopard上的Python,如何打开> 255个套接字?

考虑以下代码:

import socket
store = []
scount = 0
while True:
    scount+=1
    print "Creating socket %d" % (scount)
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    store.append(s)
Run Code Online (Sandbox Code Playgroud)

给出以下结果:

Creating socket 1
Creating socket 2
...
Creating socket 253
Creating socket 254
Traceback (most recent call last):
  File "test_sockets.py", line 9, in <module>
  File     "/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/socket.py", line 159, in __init__
socket.error: (24, 'Too many open files')
Run Code Online (Sandbox Code Playgroud)

检查sysctl允许的打开文件数量给出:

$ sysctl -A |grep maxfiles
kern.maxfiles = 12288
kern.maxfilesperproc = 10240
kern.maxfiles: 12288
kern.maxfilesperproc: 10240
Run Code Online (Sandbox Code Playgroud)

这比我能成功打开的253个插座要多......

有人可以帮助我将这个数字提高到500以上吗?我试图使用真正的套接字(要求)模拟对等网络,每个只有50个模拟节点和5个传出连接和5个传入连接,将给出500个所需套接字的数量.

顺便说一句,在Linux下运行相同的代码给了我大约1020个套接字,这更像我喜欢的方式.

python sockets macos

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

macos ×1

python ×1

sockets ×1