multiprocessing中的共享变量
不同的进程默认有自己独立的内存空间,互相之间不能直接访问。所以,通常的全局变量或者传递参数,在创建新进程时,都是拷贝一份。比如下面的代码,类变量
count
的地址在子进程和主进程中是不同的。
import multiprocessing
class Test:
count = 0
@classmethod
def fun(cls):
cls.count += 1
print('cls id: {}, cls.count id: {}, count: {}'.format(id(cls), id(cls.count), cls.count))
@classmethod
def test(cls):
p = multiprocessing.Process(target=cls.fun)
p.start()
p.join()
print('cls id: {}, cls.count id: {}, count: {}'.format(id(cls), id(cls.count), cls.count))
if __name__ == '__main__':
Test.test()
输出:
cls id: 1