Найти - Пользователи
Полная версия: Утечки памяти в простой Python программе с OpenOPC
Начало » Python для новичков » Утечки памяти в простой Python программе с OpenOPC
1
red5
# -*- coding: utf-8 -*-
import signal
import sys
import OpenOPC

# заверашение по Ctrl+C
def signal_handler(signal, frame):
print 'You pressed Ctrl+C.'
sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)

while True :
o = OpenOPC.client()
o.connect('Graybox.Simulator')
o.read('numeric.random.uint16')
o.close()
Пробовал два разных OPC сервера: Matrikon и Graybox.
Cкрипт увеличивает используемую память на килобайт в секунду с Graybox и на 0,5кб в минуту с Matrikon.
Если объект создавать один раз до цикла, то память увеличивается на 0,5 кб в минуту в обоих серверах.
Пробовал разные ПК с WinXP.
Как бороться с этими утечками?
Причина в OPC серверах? Если так, то почему после завершения программы память освобождается?
doza_and
А вы уверены что это утечки? OPC кеширует получаемые данные на стороне клиента. Насколько долго вы наблюдали за процессом поедания памяти? Создание клиента в цикле выглядит неправильно.

Я бы выход сделал несколько иначе
try:
while 1:
print "aa"
except KeyboardInterrupt:
print "exit"
Мне такой подход кажется более питоновским :)
red5
Спасибо за подсказку с исключением.
Размер питоновской программы в памяти (WM размер) постепенно увеличивается с 10 мб до 300 мб, дальше не пробовал.
Похоже придётся каждые полчаса перезагружать питоновский процесс.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB