5

私は 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
[]

アプリを閉じるとメモリが解放されます。

そのため、アプリでメモリ リークが発生する理由と、これを回避する方法がわかりません。

アイデアはありますか?ありがとう

4

1 に答える 1

3

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()
于 2013-10-13T00:14:35.023 に答える