先看不加锁的:

#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

 

相关文章:

  • 2022-12-23
  • 2022-01-24
  • 2022-12-23
  • 2022-01-11
  • 2022-12-23
  • 2021-07-06
  • 2021-12-09
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-17
  • 2021-09-23
  • 2021-11-22
  • 2021-11-23
  • 2022-12-23
  • 2021-10-19
相关资源
相似解决方案