主进程与子进程是并发执行的,进程之间默认是不能共享全局变量的(子进程不能改变主进程中全局变量的值)。如果要共享全局变量需要用(multiprocessing.Value("d",10.0),数值)(multiprocessing.Array("i",[1,2,3,4,5]),数组)(multiprocessing.Manager().dict(),字典)(multiprocessing.Manager().list(range(5)))。进程通信(进程之间传递数据)用进程队列(multiprocessing.Queue(),单向通信),管道( multiprocessing.Pipe() ,双向通信)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import multiprocessing
import time
import os
datalist = [ '+++' ] #全局变量,主进程与子进程是并发执行的,他们不能共享全局变量(子进程不能改变主进程中全局变量的值)
def adddata():
global datalist
datalist.append( 1 )
datalist.append( 2 )
datalist.append( 3 )
print ( "子进程" ,os.getpid(),datalist)
if __name__ = = "__main__" :
p = multiprocessing.Process(target = adddata,args = ())
p.start()
p.join()
datalist.append( "a" )
datalist.append( "b" )
datalist.append( "c" )
print ( "主进程" ,os.getpid(),datalist)
|
以上这篇浅谈Python 多进程默认不能共享全局变量的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/houyanhua1/article/details/78236514