我正在编写OPC客户端,所以我使用
Python OpenOPC库.
问题是每次我读一个OPC项目列表,我的应用程序消耗内存.
例如,以下代码在每次迭代时消耗大约100ko:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import OpenOPC
import time
import gc
gc.set_debug(gc.DEBUG_LEAK)
client = OpenOPC.client()
while True:
client.connect('CODESYS.OPC.DA')
dataList = client.list("PLC2.Application.GVL.*")
res = client.read(dataList)
client.close()
print gc.collect()
print gc.garbage
time.sleep(2)
并且垃圾收集器返回:
0
[]
关闭应用程序时释放内存.
所以我不明白为什么我的应用程序泄漏内存以及如何避免这种情况.
你有什么想法吗?
谢谢
最佳答案 通过使用read()函数的group参数找到解决方案:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import OpenOPC
client = OpenOPC.client()
client.connect('CODESYS.OPC.DA')
tags = client.list("PLC2.Application.GVL.*")
while True:
res = client.read(tags, group='MyGroup')
client.close()