我写了一个脚本,通过SQLAlchemy将pcapy中的mac地址记录到mysql中,我最初使用的是直接的sqlite3,但很快意识到需要更好的东西,所以这个周末过去我重写了所有的数据库谈话以符合SQLAlchemy.一切正常,数据进入并再次出现.我虽然sessionmaker()对我来说管理DB的所有会话非常有用.
我看到有关内存消耗的奇怪事件.我启动脚本...它收集并写入所有数据库...但是每隔2-4秒我的内存消耗量会增加兆字节.目前我正在谈论的记录很少,不到100行.
脚本序列:
如果是真的?仅将时间戳写入时间戳列,其中mac = newmac.回到第2步.
如果是假的?然后将新的mac写入DB.清除maclist []并再次调用第2步.
1小时30分钟后,我的内存占用量为1027MB(RES)和1198MB(VIRT),在1表数据库(MySQL)中有124行.
问:这可以归功于每次从DB清理和重新填充的maclist []吗?
问:当它达到系统最大内存时会发生什么?
任何想法或建议都会非常感谢.
memory_profiler输出有问题的段,其中list []从数据库mac_addr列填充.
Line # Mem usage Increment Line Contents
================================================
123 1025.434 MiB 0.000 MiB @profile
124 def sniffmgmt(p):
125 global __mac_reel
126 global _blacklist
127 1025.434 MiB 0.000 MiB stamgmtstypes = (0, 2, 4)
128 1025.434 MiB 0.000 MiB tmplist = []
129 1025.434 MiB 0.000 MiB matching = []
130 1025.434 MiB 0.000 MiB observedclients = []
131 …Run Code Online (Sandbox Code Playgroud)