2017-01-07 4 views
0

Я использую библиотеку многопроцессорности python для обработки больших наборов данных в реальном времени.Python Multiprocessing - очистить оперативную память после перезапуска процесса

Иногда мне нужно перезапустить процессы для изменения некоторых параметров.

Есть ли возможность очистить данные, которые сохраняются в ОЗУ. Я видел, что мой объем использования RAM ~ 2%/перезапуск.

Вы можете найти после моего кода, например:

# -*- coding: utf-8 -*- 
from PyQt4 import QtGui, QtCore 
import multiprocessing 
import sys 

def calc(q): 
    x=5 
    for i in range (10): 
     x = x+1 
     q.put(x) 

def calc_calc(quee, qq): 
    for u in range (10): 
     y = quee.get() 
     z = y*10  
     qq.put(z) 

def calc_end(queee, qqq): 
    for w in range (10): 
     h = queee.get() 
     xy = h*10 
     print(xy) 
     qqq.put(xy) 

class Window(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     self.button = QtGui.QPushButton('Test', self) 
     self.button.clicked.connect(self.handleButton) 
     layout = QtGui.QVBoxLayout(self) 
     layout.addWidget(self.button) 

    def handleButton(self): 
     p1 = multiprocessing.Process(target=calc, args=(q,)) 
     #q = q.put(x) 
     p2 = multiprocessing.Process(target=calc_calc, args =(q, qq,)) 
     #qq = qq.put(z) 
     p3 = multiprocessing.Process(target= calc_end, args =(qq, qqq,)) 

     p1.start() 
     p2.start() 
     p3.start()  

     p1.join() 
     p2.join() 
     p3.join()  

if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    window = Window() 

    #multiprocessing queue 1 
    q = multiprocessing.Queue() 
    #multiprocessing queue 3 
    qq = multiprocessing.Queue() 
    #multiprocessing queue 3 (aktuell nicht belegt) 
    qqq = multiprocessing.Queue() 

    window.show() 
    sys.exit(app.exec_()) 

ответ

0

Вы не можете явно свободной памяти. Что вы можете сделать, так это позвонить в сборщик мусора с gc.collect() по Python Documentation.