Python多进程间同步互斥方法lock
1、from multiprocessing import Lock
创建 进程锁对象lock = Lock()相关方法:lock.acquire() 给临界区上锁lock.release() 给临界区解锁说明:具体实现上 acquire() 为一个条件阻塞函数,当有任意一个进程先进行了acquire操作后,其他进程再企图进行acquire操作时就会阻塞,直到lock对象被 release 后其他进程才可进行下次acquire操作
2、具体示例:
from multiprocessing import Process,Lock
import time,sys
def worker1(stream):
lock.acquire() # 加锁
for i in range(5):
time.sleep(1)
stream.write("Lock acquired via\n")
lock.release()#解锁
def worker2(stream):
# lock.acquire()
with lock: #加锁 语句块结束即解锁
for i in range(5):
time.sleep(1)
stream.write("Lock acquired directly\n")
# lock.release()
lock = Lock()
#sys.stdout为所有进程都拥有的资源
w1 = Process(target=worker1,args=(sys.stdout,))
w2 = Process(target=worker2,args=(sys.stdout,))
w1.start()
w2.start()
w1.join()
w2.join()