1

我在using中读取了一个.pcap文件。如果我多次阅读该文件,似乎不会释放资源。仅当我关闭程序时才释放资源。pythonpysharkpysharkpython

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 使用的某个包打开了某个文件但没有正确关闭它。

4

0 回答 0