互斥锁

进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的,而共享带来的是竞争,竞争带来的结果就是错乱,无法保证数据的安全性。所以在  运行的时候需要通过加锁来对进程的限制,以保证数据的安全性,但是带来的是执行效率低下,有并发运行转成串行运行

from multiprocessing import Process, Lock  #锁模块
import time


class Myprocess(Process):

    def __init__(self, name, mutex):
        super().__init__()
        self.name = name
        self.mutex = mutex

    def run(self):
        self.mutex.acquire()  #加锁
        print('%s is running 1' % self.name)
        time.sleep(1)
        print('%s is running 2' % self.name)
        time.sleep(1)
        print('%s is running 3' % self.name)
        self.mutex.release()  #释放


if __name__ == '__main__':
    mutex = Lock()  #实例化锁对象
    for i in range(3):
        p = Myprocess('子进程%s' % i, mutex)
        p.start()
原文地址:https://www.cnblogs.com/zhengyiqun1992/p/10395940.html