先看不加鎖的:
#coding=utf-8
from multiprocessing import Process,Lock
import time
def l(num):
#lock.acquire()
#stime.sleep(2)
print "Hello num:%s" %num
#lock.release()
if __name__=='__main__':
lock=Lock()
for num in range(10):
Process(target=l,args=(num,)).start()
結果:可以看到,啟動10個進程,異步執行打印函數,打印的很亂
c:\Python27\Scripts>python task_test.py
HHello num:0Hello num:1
ello num:2
Hello num:3
HHello num:4ello num:5
Hello num:6
Hello num:7
Hello num:8
Hello num:9
加鎖:
#coding=utf-8
from multiprocessing import Process,Lock
import time
def l(num,lock):
lock.acquire()
#stime.sleep(2)
print "Hello num:%s" %num
lock.release()
if __name__=='__main__':
lock=Lock()
for num in range(10):
Process(target=l,args=(num,lock)).start()
結果:執行打印的進程獲得鎖,打印后釋放鎖,之后下一個進程獲得鎖,所以每次打印都只有一個進程在操作
c:\Python27\Scripts>python task_test.py
Hello num:0
Hello num:1
Hello num:3
Hello num:2
Hello num:6
Hello num:5
Hello num:4
Hello num:7
Hello num:8
Hello num:9