当外部方法和实例方法成为流程的目标时,它们之间有什么区别?

时间:2018-09-04 13:24:57

标签: python windows python-multiprocessing

from  multiprocessing import Manager, Process
class Test():
    def __init__(self,queue):
        self.proc1 = Process(target =self.product1,args =(queue,))
        self.proc2 = Process(target =self.product2,args =(queue,))
        self.proc1.start()
        self.proc2.start()
        self.proc1.join()
        self.proc2.join()
    def product1(self,queue):
        queue.put(1)
    def product2(self,queue):
        queue.put(2)
def product1(queue):
    queue.put(1)


def product2(queue):
    queue.put(2)
if __name__=="__main__":
    queue = Manager().Queue(2)
    one = Test(queue)

将实例方法传递到参数目标时,会出现一些pickle.PicklingError,EOFError和WindowsError错误。

如果将外部方法(product1,product2)传递给参数目标,则不会出错。

原因和区别是什么?

我的操作系统是Windows7。

0 个答案:

没有答案