进程间是不能共享变量的,但是如果当有需要共享变量,可以借用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