multiprocessing模块实现资源共享

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

猜你喜欢

转载自www.cnblogs.com/heimaguangzhou/p/11635240.html