博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python_多进程_进程安全(加锁)&进程同步信号传递(Event)
阅读量:5334 次
发布时间:2019-06-15

本文共 1210 字,大约阅读时间需要 4 分钟。

一、多进程_进程安全(加锁)

1、目的

锁是为了确保数据的一致性,避免读写时,其他数据同时读取,会造成数据错误

线程安全:多线程读写的时候会加锁

线程不安全:没加锁,写起来会乱

2、加锁

#encoding=utf-8from multiprocessing import Process, Lock  import timedef l(num,lock):    lock.acquire() # 获得锁  time.sleep(0.2)  print("Hello Num: %s" % (num))    lock.release() # 释放锁if __name__ == '__main__':      lock = Lock()  # 创建一个共享锁实例    for num in range(50):        Process(target = l, args = (num,lock)).start()

3、没加锁

#encoding=utf-8from multiprocessing import Process, Lock  import timedef l(num):    #lock.acquire() # 获得锁  time.sleep(0.2)  print("Hello Num: %s" % (num))    #lock.release() # 释放锁 if __name__ == '__main__':      #lock = Lock()  # 创建一个共享锁实例    for num in range(50):        Process(target = l, args = (num,)).start()

4、加上N把锁

#encoding=utf-8import multiprocessingimport timedef worker(s, i):  s.acquire()  print(multiprocessing.current_process().name + " acquire")  time.sleep(i)  print(multiprocessing.current_process().name + " release")  s.release()if __name__ == "__main__":  # 设置限制最多3个进程同时访问共享资源  s = multiprocessing.Semaphore(3)  for i in range(5):    p = multiprocessing.Process(target = worker, args = (s, i * 2))    p.start()

 

转载于:https://www.cnblogs.com/rychh/articles/11374579.html

你可能感兴趣的文章
linux下的静态库与动态库详解
查看>>
hbuilder调底层运用,多张图片上传
查看>>
较快的maven的settings.xml文件
查看>>
Git之初体验 持续更新
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
Maven之setting.xml配置文件详解
查看>>
SDK目录结构
查看>>
malloc() & free()
查看>>
HDU 2063 过山车
查看>>
高精度1--加法
查看>>
String比较
查看>>
Django之Models
查看>>
CSS 透明度级别 及 背景透明
查看>>
Linux 的 date 日期的使用
查看>>
PHP zip压缩文件及解压
查看>>
SOAP web service用AFNetWorking实现请求
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>