python多进程内存共享_python 归纳 (二十)_多进程数据共享和同步_共享内存Value Array...
# -*- coding: utf-8 -*-
"""
多進程 數據共享 共享變量 Value,Array
邏輯:
2個進程,對同一份數據,一個做加法,一個做加法,各做10次
用法:
1. 創建共享變量 o = Value(‘i‘,1000) or o = Array(‘i‘,list) 指定不同的類型
2. 啟動子進程通過 o.value or o[i] 存取變量的值
3. 必要使用鎖操作函數 o.acquire() o.release()
參考:
get_lock() 返回共享變量使用的Rlock 實例
get_obj() 返回共享變量數據類型
"""
from multiprocessing import Process,Value,Array
import time
import random
# 對共享變量加法
def save_money(money):
money.acquire() # 申請鎖
for i in range(10):
time.sleep(0.3)
change = random.randint(1,200)
money.value += change
print "\n ",money.value,change
money.release() # 釋放鎖
# 對共享變量減法
def take_money(money):
money.acquire()
for i in range(10):
time.sleep(0.5)
change = random.randint(1,150)
money.value -= change
print "\n ",money.value," ",-change
money.release()
# 對共享變量加法
def save_money2():
m.acquire() # 申請鎖
m[2] = 8
print [ i for i in m ]
m.release() # 釋放鎖
# 對共享變量減法
def take_money2():
m.acquire() # 申請鎖
print [ i for i in m ]
m.release() # 釋放鎖
if True:
m = Array(‘i‘,[1,2,3,4,5]) # 放在main下面,就不是全局了
if __name__ == ‘__main__‘:
# 共享內存,可以多個進程存取,整型,變量名money,變量值1000
money = Value(‘i‘,1000)
d = Process(target=save_money, args=(money,))
d.start()
w = Process(target=take_money, args=(money,))
w.start()
d.join()
w.join()
Process(target=save_money2).start()
Process(target=take_money2).start()
print "end"
總結
以上是生活随笔為你收集整理的python多进程内存共享_python 归纳 (二十)_多进程数据共享和同步_共享内存Value Array...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matebookxpro两个插口区别
- 下一篇: python下载微信公众号文章_pyth