学习笔记(19):Python网络编程并发编程-互斥锁
生活随笔
收集整理的這篇文章主要介紹了
学习笔记(19):Python网络编程并发编程-互斥锁
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
立即學習:https://edu.csdn.net/course/play/24458/296430?utm_source=blogtoedu
1.互斥鎖:
??????? 多進程間的內存是相互隔離的,因此其數據也是相互隔離的,但是所有的進程都共享一個文件操作系統或者說共享文件處理器和打印端。而共享帶來的是競爭,競爭帶來的是混亂,而解決這種混亂則用到了互斥鎖!實際上互斥鎖的應用使得多進程按照串行的方式進行運行(串行可以通過互斥鎖和join來實現,具體請看下一個學習筆記)
?
2.優劣勢:
?????? 互斥鎖保證了各進程間數據處理的有序性,避免了上述情況的混亂,但是使得一次只能有一個進程在運行,降低了運行效率。
?
3.關鍵知識點:
?????? 1)模塊:multiprocessing和threading模塊
??????? 2)Process類和Thread類
??????? 3)acquire()——獲得鎖,release()——釋放鎖
?
4.代碼:
1)multiprocessing模塊(進程鎖)
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(target=task, 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 0 '''2)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(target=task, args=('子進程%s'%i,lock))p.start()注:具體看后面的學習筆記
總結
以上是生活随笔為你收集整理的学习笔记(19):Python网络编程并发编程-互斥锁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记(18):Python网络编程并
- 下一篇: 兰勃特等角圆锥投影的双标准纬线的选择