相关疑难解决方法(0)

为什么multiprocessing.Process在windows和linux上对全局对象和函数参数的行为不同

在windows和linux上运行时,以下代码具有不同的输出(均使用python2.7)

'''import_mock.py'''
to_mock = None
Run Code Online (Sandbox Code Playgroud)
'''test.py'''
import import_mock
from multiprocessing import Process

class A(object):
    def __init__(self):
        self.a = 1
        self.b = 2
        self.c = 3

    def __getstate__(self):
        print '__getstate__'
        return { 'a': self.a, 'b': self.b,
                 'c':0 }

def func():
    import_mock.to_mock = 1
    a = A()
    return a

def func1(a):
    print a.a, a.b, a.c
    print import_mock.to_mock


if __name__ == '__main__':
    a = func()
    p = Process(target=func1, args=(a,))
    p.start()
    p.join()
Run Code Online (Sandbox Code Playgroud)

在Windows上,输出是:

__getstate__
1 2 0
None
Run Code Online (Sandbox Code Playgroud)

这是我的预期

在linux上,它是:

1 2 3
1 …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing

13
推荐指数
2
解决办法
1万
查看次数

标签 统计

multiprocessing ×1

python ×1