进程间是不能共享变量的,但是如果当有需要共享变量,可以借用multiprocessing模块中的方法,下面就来介绍一下该模块中方法的实现方法:
(一)共享变量

[AppleScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
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] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
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] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
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] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
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)
更多技术资讯可关注:gzitcast
01-19 23:29
查看更多