我在using中读取了一个.pcap
文件。如果我多次阅读该文件,似乎不会释放资源。仅当我关闭程序时才释放资源。python
pyshark
pyshark
python
import pyshark
def foo():
for i in range(100):
p = pyshark.FileCapture('/tmp/tmp.pcap')
return
foo()
sleep(100)
程序开始前
konstantin@linux-ks:~/Programs/skype-4.3.0.37> cat /proc/net/sockstat
sockets: used 945
TCP: inuse 12 orphan 0 tw 0 alloc 24 mem 0
UDP: inuse 14 mem 4
程序运行时
konstantin@linux-ks:~/Programs/skype-4.3.0.37> cat /proc/net/sockstat
sockets: used 1154
TCP: inuse 12 orphan 0 tw 0 alloc 24 mem 1
UDP: inuse 14 mem 4
我发现缓解问题的唯一方法并不简单——只需增加系统中的打开文件限制,这样就很难达到限制。
/etc/security/limits.conf:
* soft nofile 10000
* hard nofile 10000
你能帮我理解这种令人费解的行为的原因吗?我想 pyshark 或 pyshark 使用的某个包打开了某个文件但没有正确关闭它。