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