我使用.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使用的一些软件包打开了一些文件,但没有正确关闭它。