本帖最后由 Leo06 于 2018-11-8 08:32 编辑
进程间是不能共享变量的,但是如果当有需要共享变量,可以借用multiprocessing模块中的方法,下面就来介绍一下该模块中方法的实现方法:
(一)共享变量
[AppleScript] 纯文本查看 复制代码 import multiprocessing
def func(num):
num.value = 20
if __name__ == "__main__":
num = multiprocessing.Value("d", 10.0)
print(num.value)
p = multiprocessing.Process(target=func, args=(num,))
p.start()
p.join()
print(num.value)
(二)共享数组
[AppleScript] 纯文本查看 复制代码 import multiprocessing
def func(arr):
arr[0] = 6
arr[1] = 7
if __name__ == "__main__":
arr = multiprocessing.Array("i", [1, 2, 3, 4, 5])
print(arr[:])
p = multiprocessing.Process(target=func, args=(arr,))
p.start()
p.join()
print(arr[:])
(三)共享列表
[AppleScript] 纯文本查看 复制代码 import multiprocessing
def func(mylist):
mylist.append(11)
mylist.append(22)
mylist.append(33)
if __name__ == "__main__":
mylist = multiprocessing.Manager().list(range(5))
p = multiprocessing.Process(target=func, args=(mylist,))
p.start()
p.join()
print(mylist)
(四)共享字典
[AppleScript] 纯文本查看 复制代码 import multiprocessing
def func(mydict):
mydict['name'] = 'python'
mydict['age'] = 20
if __name__ == "__main__":
mydict = multiprocessing.Manager().dict()
p = multiprocessing.Process(target=func, args=(mydict,))
p.start()
p.join()
print(mydict)
|