百度推广登录首页,河南网站优化推广,网站记录登录账号怎么做,中国拟在建项目网立即学习:https://edu.csdn.net/course/play/24458/296430?utm_sourceblogtoedu
1.互斥锁#xff1a; 多进程间的内存是相互隔离的#xff0c;因此其数据也是相互隔离的#xff0c;但是所有的进程都共享一个文件操作系统或者说共享文件处理器和打印端。而共享带来的是竞争…立即学习:https://edu.csdn.net/course/play/24458/296430?utm_sourceblogtoedu
1.互斥锁 多进程间的内存是相互隔离的因此其数据也是相互隔离的但是所有的进程都共享一个文件操作系统或者说共享文件处理器和打印端。而共享带来的是竞争竞争带来的是混乱而解决这种混乱则用到了互斥锁实际上互斥锁的应用使得多进程按照串行的方式进行运行串行可以通过互斥锁和join来实现具体请看下一个学习笔记 2.优劣势 互斥锁保证了各进程间数据处理的有序性避免了上述情况的混乱但是使得一次只能有一个进程在运行降低了运行效率。 3.关键知识点 1模块multiprocessing和threading模块 2Process类和Thread类 3acquire()——获得锁release——释放锁 4.代码
1multiprocessing模块进程锁
from multiprocessing import Process,Lock
import timedef task(name,lock):lock.acquire()print(%s 1%name)time.sleep(2)print(%s 2%name)time.sleep(2)print(%s 3%name)lock.release()if __name__ __main__:lock Lock()for i in range(3):p Process(targettask, args(子进程%s%i,lock))p.start()
E:\python3\venv2\venv\Scripts\python.exe C:/Users/jinlin/Desktop/python_further_study/并发编程/互斥锁.py
子进程0 1
子进程0 2
子进程0 3
子进程1 1
子进程1 2
子进程1 3
子进程2 1
子进程2 2
子进程2 3Process finished with exit code 02)threading模块线程锁
import threading
import timedef task(name,lock):lock.acquire()print(%s 1%name)time.sleep(2)print(%s 2%name)time.sleep(2)print(%s 3%name)lock.release()if __name__ __main__:lock threading.Lock()for i in range(3):p threading.Thread(targettask, args(子进程%s%i,lock))p.start()
注具体看后面的学习笔记