0

一部のコードでpythonsマルチプロセッシングモジュールを使用しています。クラスを制御し、いくつかのアクションを実行するコントローラークラスがあります。

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()

dosomethingのinit部分のpringmlistは期待どおりに[(1、2、3、4)]を出力しますが、dosomething部分のリストはIOError 11を出力して機能しません。それが正しいか間違っているかを誰かが助けてくれますか?

4

1 に答える 1

0

への呼び出しがProcess.__init__ありません。

関数を使用できる Process サブクラスを必ずしも作成する必要はありません。

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()
于 2012-09-25T16:31:49.430 に答える