Python スクリプトで (明らかな) メモリ リークが発生しましたが、これは説明できません (常駐メモリは増え続けています)。最初は約 6MB 常駐していましたが、一晩実行したままにしておくと、200MB を超えていました (gc による鋸歯状のメモリ使用パターンを除外するためにこれを行いました)。私はそれをこのスクリプトに要約しました:
import sys
import time
import paramiko
def update():
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh.connect(hostname='localhost')
finally:
ssh.close()
def main():
while(True):
update()
time.sleep(0.001)
if __name__ == '__main__':
sys.exit(main())
問題は、新しい SSHClient をインスタンス化し続けていることではないかと考えていましたが、どういうわけかそれらが破棄されていませんでしたが、このバージョンではメモリ リークがさらに速くなりました。
import sys
import time
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
def update():
global ssh
try:
ssh.connect(hostname='localhost')
finally:
ssh.close()
def main():
while(True):
update()
time.sleep(0.001)
if __name__ == '__main__':
sys.exit(main())
誰かがこれに光を当てることができれば、または私がただ愚かで、誰かが私が最も感謝している理由を指摘できるなら. ありがとう