2012-09-25 4 views
0

필자는 일부 코드에서 파이썬 다중 처리 모듈을 사용하고 있습니다. 클래스를 제어하고 일부 작업을 수행하는 컨트롤러 클래스가 있습니다.파이썬 관리자 관리 목록

import multiprocessing 
from multiprocessing import Queue, Process, Manager 

class dosomething(multiprocessing.Process): 
     def __init__(self,managerList): 
       self.mlist = managerList 
       print self.mlist 

     def run(self): 
       self.mlist.append((4,5,6)) 

class doController: 
     def __init__(self): 
       mgr = Manager() 
       self.mlist = mgr.list() 
       self.mlist.append((1,2,3,4)) 
       t = dosomething(self.mlist) 
       #t.daemon = True 
       #t.start() 

     def printer(self): 
       return self.mlist 


gd = doController() 
print gd.printer() 
해봐요 인쇄 [(1, 2, 3, 4)] 예상하지만 해봐요 부분의 목록이 맞다 경우 누군가가 도와 드릴까요 IO 오류 (11)을주는 일을하지 않는의 초기화 부분에

프링의 mlist 또는 틀린?

+0

는 "작동하지 않습니다"쓸모가 없다. 무슨 일이 일어날 지, 무엇을 기대 하느냐, 무엇을 말합니까 (인용구, 의역이 아닌) 등등. – delnan

+0

@delnan IOError 11은 내가 얻은 것입니다. – ash

+0

* C * lass; 괄호없이 인쇄; 멀티 프로세싱 대신 멀티 프로세싱; * p * rocess. 그리고 마침내, 모든 것이 정리되면, 그것은 아무것도하지 않습니다. 비 작동 코드는 어떻게 처리해야합니까? IOError를 어떻게 재현해야합니까? – Scharron

답변

0

Process.__init__에 대한 호출이 없습니다.

당신은 necessarely이 기능을 사용할 수있는 프로세스의 하위 클래스를 만들 필요가 없습니다 :

from multiprocessing import Process, Manager 

def dosomething(mlist): 
    mlist.append((4,5,6)) 

def main(): 
    manager = Manager() 
    L = manager.list((1,2,3,4)) 

    p = Process(target=dosomething, args=(L,)) 
    p.start() 
    p.join() 

    print L 

if __name__ == '__main__': 
    main() 
+0

나는 내 목표를 달성하기 위해 약간의 노력을 기울였다. 귀하의 의견을 보내 주셔서 감사합니다. – ash