一、互斥锁
1 2 3 |
|
进程互斥锁代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
执行结果:
1 2 3 4 5 6 7 8 9 10 |
|
通过上面这个例子,我们知道互斥锁可以一个任务中的某个子任务由并行改为串行,而不是将整个任务改成串行。
总结:
多个进程的内存是相互隔离的,但硬盘,数据库等确实共享的。通过互斥锁就可以实现多个进程之间的通信,并且不会造成数据混乱,保证的数据的安全。但互斥锁将并发改为了串行,降低了效率 ,而且需要我们自己加锁,释放锁,容易出现问题。
二、IPC机制
进程间通信(IPC,InterProcess Communication)
1 2 3 |
|
进程间通信(IPC)常见分类的特点
1.管道
1 |
|
特点:
1 2 3 |
|
2.FIFO (命名管道)
1 |
|
特点:
1 2 |
|
3.消息队列
1 |
|
特点:
1 2 3 |
|
4.信号量
1 |
|
特点:
1 2 3 4 |
|
5.共享内存
1 |
|
特点:
1 2 3 |
|
参考文档:https://blog.csdn.net/python_jw/article/details/79506702
三、使用队列实现进程间通信
1.Queue通信机制
首先讲解 一下Queue通信方式。Queue是多进程安全的队列,可以使用Queue实现多进 程之间的数据传递,
通信原理:在内存中建立队列数据结构模型。多个进程都可以通过队列存入内容,取出内容的顺序和存入的顺序保持一致
有两个方法: Put和Get可以进行Queue操作:
put:
1 |
|
get:
1 |
|
2.代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
四、生产者消费者模型介绍
什么是生产者和消费者模式
1 2 3 4 5 |
|
为什么要使用生产者消费者模型
1 2 3 |
|
代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
运行结果:
1 2 3 4 5 6 |
|