python多進程打印字符,加鎖(Lock加鎖)


 

先看不加鎖的:

#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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM