2016-05-17 4 views
0

Ich bin neu in Python Multiprozess API. Ich habe eine benutzerdefinierte Unterklasse von , lassen Sie uns MyProcess nennen. Viele Beispiele, die ich sehe, definieren Queues in __main__ und gehen dann zum Process Konstruktor über.Queue und Process Unterklasse Instanziierungsverhalten

In meinem Fall spawnen ich N Process Unterklassen und 2 Queue für jeden (vor und nach Prozess). Ich würde es vorziehen, die Queue Initialisierung in jedem Teilprozess zu setzen:

import multiprocessing as mp 

class MyProcess(mp.Process) : 

def __init__(self,ID) : 
    mp.Process.__init__(self) 
    self.name = ID 
    self.queues = {'pre':mp.Queue(),'post':mp.Queue()} 

if __name__ == "__main__" : 

    my_proc = MyProcess(ID) 

Statt:

import multiprocessing as mp 

class MyProcess(mp.Process) : 

    def __init__(self,ID,queues) : 
     mp.Process.__init__(self) 
     self.name = ID 
     self.queues = queues 

if __name__ == "__main__" : 

    my_proc = MyProcess(ID,{'pre':mp.Queue(),'post':mp.Queue()}) 

Ist das möglich oder gibt es eine Gurke/sync/scope Problem hier?

Antwort

0

Nach einigen Tests scheint letzteres gut zu funktionieren.