Python并发编程

第一章:掌握并发与并行

第二章:让程序动起来-进程

第三章:程序的执行者-线程

第四章:比线程更轻量-协程

首页 > Python并发编程 > 第二章:让程序动起来-进程 > 2.3节:进程的通信与同步

2.3节:进程的通信与同步

薯条老师 2020-05-30 09:33:42 233095 0

编辑 收藏

教程引言:

该系列教程会系统地讲解并发与并行的基础概念,以及如何使用Python进行并发编程。掌握并发编程,是成为一名优秀程序员所必须具备的基本功。

2.3.1 进程间的通信

人不是孤立存在的,一旦融入社会,就必须与人打交道。在人类社会中,人与人之间可以通过文字,通讯设备,电子邮件等媒介进行交流,通信。同样地,计算机系统中的进程也不是完全孤立存在的,它们需要争夺系统中的资源,在特定情况下,进程之间也需要进行通信。进程间的通信,本质是进行数据传输。对初学者来说,最容易联想到的通信方式是文件。A进程往文件中写入数据,B进程再从文件中读出数据,这样就实现了进程间的通信。

image.png



除了文件,系统还提供了其它的进程通信机制,比如共享内存,信号,套接字等。本教程的主要目的在于讲解并发编程所涉及的基础概念,以帮助初学者更好地掌握Python中的并发编程。关于进程间的通信机制,薯条老师推荐《Unix网络编程》这本书。

《Unix网络编程》这本书有两卷,卷一主要讲解的是利用套接字API进行网络编程,卷二主要讲解的是进程间的通信机制。

在Python中对各系统(windows,Unix)的进程通信机制进行了封装,同学们在使用相应的模块来进行进程通信时,无需关心各系统的差异。

2.3.2 进程间的同步

首先抛出一个问题,什么叫进程同步?进程同步是指多个进程在进行协同工作或数据共享的过程中可能会发生冲突,这时引入了一系列机制来对进程间的操作进行协调和制约。

如果系统中只存在一个进程,或系统中的进程完全孤立存在,那么无需同步。之所以需要同步,是因为多个进程在并发地使用同一个共享资源,或者需要协同完成同一个任务。

将进程同步的概念置于生活场景中进行类比,会更加容易理解。
以并发使用共享资源为例:

程序员007需要使用打印机来打印辞职报告,程序员996在同一时间也需要使用公司中的打印机来打印辞职报告,由于过劳科技有限公司只有这么一台打印机,所以必须提供一种同步机制来进行协调。最后经“过劳委员会”一致协商,大家都同意以加班程度的高低来决定优先级。这样的话,程序员007会开始使用打印机。

windows和Unix系统都提供了进程的同步机制,比如互斥锁和信号量。关于互斥锁和信号量等同步机制,会在第五章《Python多进程编程》中进行详细的讲解。

程序中的多个进程同时对共享资源进行访问时,通过进程间的同步机制,能保证对资源进行安全地访问,不会出现数据不一致的情况,这就是所谓的进程安全。

2.3.3 知识要点

(1) 计算机系统中的进程不是完全孤立存在的,它们需要争夺系统中的资源,在特定情况下,进程之间也需要进行通信。进程间的通信,本质是进行数据传输。
(2) 进程同步是指多个进程在进行协同工作或数据共享的过程中可能会发生冲突,这时引入了一系列机制来对进程间的操作进行协调和制约。

2.3.4 课后习题

(1) 进程进行通信的必要性是什么?
(2) 为什么需要进程同步?
(3) 举出一个“协同完成同一个任务”的进程同步的例子。

关注微信公众号:Python在线课堂,学习Python视频课程以及其它的编程课程:tornado,django,web开发,网络爬虫,大数据分析,机器学习。公众号后台回复“学习资料”领取Python,web开发,网络爬虫,大数据分析,机器学习等学习资料。


欢迎 发表评论:

  • 请填写验证码