300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 学习笔记(19):Python网络编程并发编程-互斥锁

学习笔记(19):Python网络编程并发编程-互斥锁

时间:2019-06-03 23:00:02

相关推荐

学习笔记(19):Python网络编程并发编程-互斥锁

立即学习:/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,Lockimport 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 threadingimport 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()

注:具体看后面的学习笔记

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。