这个脚本慢慢地吃我的RAM。当我运行它时,我可以看到Python的RAM使用率在每个循环中都大约增加了1mb,但我无法弄清楚为什么。我已经发现它是查询的迭代增加了RAM,但这就是我所能想到的。任何帮助都是极好的。为什么这个python脚本慢慢咀嚼我的RAM?
from haystack.pmod import piliPlacement #this is the SA model
from time import sleep
from datetime import datetime
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
now = datetime.now()
engine = create_engine('mssql://xxxxxxx;uid=user;pwd=xxxxx',echo=False)
Session = sessionmaker(bind=engine)
def syncPlacements(session):
query = session.query(piliPlacement).filter(piliPlacement.Time > now)
pili_placements = [p.ID_Placement for p in query.all()] # this is what adds the RAM
del pili_placements
print 'loop'
while True:
session = Session()
syncPlacements(session)
sleep(3)
这段代码中有一个明显的错误,可能是不相关的。你正在检查'if countPiliPlacements!= countHaystackPlacements():'......注意第一部分是函数,而不是函数调用。 – donkopotamus
并且检查每个数据库中的项目数量并不是一种可靠的同步方法......如果有人在三秒钟内删除并将项目添加到一个数据库中,您将无法检测到它。 – donkopotamus
Donkopotamus,两人都有罪。我刚刚发现了功能的东西..哎呀!你说得对,我应该调和身份证。 – MFB