摘要: 一、为什么引入进程池 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务。那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗时间,销毁进程(空间,变量,文件信息等等的内容)也需要消耗时间。第二即便开启了成千上万的进程,操作系统 阅读全文
posted @ 2018-10-25 18:00 qi.hu 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 一、引入 展望未来,基于消息传递的并发编程是大势所趋;即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合。通过消息队列交换数据。这样极大地减少了对使用锁定和其他同步手段的需求,还可以扩展到分布式系统中。 进程间应该尽量避免通信,即便需要通信,也应该选择进程安全的工具来避免加锁带来的问题,应该 阅读全文
posted @ 2018-10-25 17:58 qi.hu 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 一、创建管道的类 1、管道的基本参数 Pipe([duplex]):在进程之间创建一条管道,并返回元组(conn1,conn2),其中conn1,conn2表示管道两端的连接对象,强调一点:必须在产生Process对象之前产生管道 参数介绍: dumplex:默认管道是全双工的,如果将duplex射 阅读全文
posted @ 2018-10-25 17:57 qi.hu 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 一、生产者消费者模型 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为了解决这个问题于是引入 阅读全文
posted @ 2018-10-25 17:55 qi.hu 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 一、定义 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的。队列就像一个特殊的列表,但是可以设置固定长度,并且从前面插入数据,从后面取出数据,先进先出。 格式定义: from multiprocessing i 阅读全文
posted @ 2018-10-25 17:53 qi.hu 阅读(146) 评论(0) 推荐(1) 编辑
摘要: 一、基本定义 事件默认值为False event = Event() #设置一个事件实例 event.set() #设置标志位,将e事件的状态改为True event.clear() #清空标志位,将e事件的状态改为False event.wait() #等待设置标志位 二、信号灯实例 1 impo 阅读全文
posted @ 2018-10-25 17:50 qi.hu 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 一、定义 1、互斥锁同时只允许一个线程更改数据,而信号量Semaphore是同时允许一定数量的线程更改数据 。 假设商场里有4个迷你唱吧,所以同时可以进去4个人,如果来了第五个人就要在外面等待,等到有人出来才能再进去玩。 2、实现: 信号量同步基于内部计数器,每调用一次acquire(),计数器减1 阅读全文
posted @ 2018-10-25 17:49 qi.hu 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 一、定义 我们千方百计实现了程序的异步,让多个任务可以同时在几个进程中并发处理,他们之间的运行没有顺序,一旦开启也不受我们控制。尽管并发编程让我们能更加充分的利用IO资源,但是也给我们带来了新的问题:进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的,而共 阅读全文
posted @ 2018-10-25 17:48 qi.hu 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 一、创建进程的第二种方法 1 # 创建进程的第二种方式 2 import os 3 import time 4 from multiprocessing import Process 5 6 class My_process(Process): # 继承Process方法,重写run方法,传参数的时 阅读全文
posted @ 2018-10-25 17:45 qi.hu 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 仔细说来,multiprocess不是一个模块而是python中一个操作、管理进程的包。 之所以叫multi是取自multiple的多功能的意思,在这个包中几乎包含了和进程有关的所有子模块。由于提供的子模块非常多,为了方便大家归类记忆,我将这部分大致分为四个部分:创建进程部分,进程同步部分,进程池部 阅读全文
posted @ 2018-10-25 17:42 qi.hu 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 一、进程状态介绍 在了解其他概念之前,我们首先要了解进程的几个状态。在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞。 (1)就绪(Ready)状态 当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。 (2)执行 阅读全文
posted @ 2018-10-25 17:38 qi.hu 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 一、并发 无论是并行还是并发,在用户看来都是'同时'运行的,不管是进程还是线程,都只是一个任务而已,真是干活的是cpu,cpu来做这些任务,而一个cpu同一时刻只能执行一个任务。 并发:是伪并行,即看起来是同时运行。单个cpu+多道技术就可以实现并发,(并行也属于并发) 二、并行 并行:并行:同时运 阅读全文
posted @ 2018-10-25 17:36 qi.hu 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 一、进程 1、定义 具有独立功能的程序在某个数据集合上的一次运行活动,也是操作系统进行资源分配和保护的基本单位。 python文件中写了一些代码,这叫做程序,运行这个python文件的时候,这叫做进程。 补充:每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的 阅读全文
posted @ 2018-10-25 17:35 qi.hu 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 一、操作系统 1、定义:精简的说的话,操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。 操作系统位于计算机硬件与应用软件之间,本质也是一个软件。操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成, 阅读全文
posted @ 2018-10-25 17:33 qi.hu 阅读(315) 评论(0) 推荐(0) 编辑