进程:正在执行的一个过程,进程是对正在执行过程的一个抽象。区别于程序,

进程的三种状态:  进程是动态的。

就绪态ready:   进程具备运行状态,等待操作系统分配处理器

运行状态running:进程正在占用处理器运行。  运行态的进程当遇到IO时,就会变成阻塞态,当超过时间片时,会变成就绪态

阻塞态blocked:进程不具备运行条件,正在等待某个事件的完成

python中开启多个进程的方法

1、定义函数方式,开启新的子进程,但是没有手动回收子进程,注意:如果主进程和子进程能正常结束,则进程都会被回收,可以通过操作系统查看PID号。主进程和子进程是异步的。

from multiprocessing import Process
import time def task(name):
print(f'start..{name}..')
time.sleep(3)
print(f'end..{name}...') if __name__ == '__main__':
# Process()实例化的时候,args代表target所指函数中的参数,如果没有参数,就不需要args
pro_obj = Process(target=task, args=('reax',)) # 定义元祖,如果只有一个元素,一定要加逗号
pro_obj.start()
print('start主进程')

  

2、开启新的子进程,并回收子进程,此时,主进程一定会等子进程执行完成,进程回收之后 join( )。

def task(name):
time.sleep(4)
print(f'start..{name}..')
time.sleep(3)
print(f'end..{name}...') if __name__ == '__main__':
# Process()实例化的时候,args代表target所指函数中的参数,如果没有参数,就不需要args
pro_obj = Process(target=task, args=('reax',)) # 定义元祖,如果只有一个元素,一定要加逗号
pro_obj.start()
pro_obj.join()
print('start主进程')

  

3、通过继承Process类实现。

from multiprocessing import Process
import time class MyProcess(Process):
def run(self):
print(f'start...{self.name}的子进程')
time.sleep(3)
print(f'end...{self.name}的子进程') if __name__ == '__main__':
list1 = [] for line in range(2):
obj = MyProcess()
obj.start()
list1.append(obj) for obj in list1:
obj.join() print('主进程...')

  

多道技术:是针对一个CPU而言,

时间的复用:遇到IO或者时间占用过长时,会保留当前进程的状态,切换进程。 优点:CPU使用率高;缺点:程序执行效率低

空间的复用:一个CPU可以提供给多个进程使用。

并发:针对CPU的一个核,通过不停切换进程,造成多个进程同时运行的假象,实现伪并行。----->单核+多道技术,就可以实现并发

并行:真正实现多个进程同时运行。一定要多核。

同步:必须要等主动获取。

异步:等通知或者函数回调。

阻塞:进程挂起,什么都不做。

非阻塞:进程未挂起,还可以处理其他事。

异步同步反映的是执行者执行方式,同步表示执行者主动查询,异步表示自己不主动查询而是等待消息等机制通知。

阻塞非阻塞反映的是执行者执行状态,阻塞表示执行者等待,非阻塞表示执行者不等,而是去做其他事情。

同步阻塞、同步非阻塞、异步阻塞、异步非阻塞:

拿网上老张喝茶为例子:

同步阻塞:

老张把水壶放到火上,立等水开

同步非阻塞:

老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有

异步阻塞:

老张买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。老张把响水壶放到火上,立等水开

异步非阻塞:

老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶

总结:

异步同步反映的是执行者执行方式,同步表示执行者主动查询,异步表示自己不主动查询而是等待消息等机制通知。

阻塞非阻塞反映的是执行者执行状态,阻塞表示执行者等待,非阻塞表示执行者不等做其他事情。

  

CSIC_716_20191206【并发编程理论基础】的更多相关文章

  1. [ 高并发]Java高并发编程系列第二篇--线程同步

    高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...

  2. python3全栈开发-补充UDP的套接字、操作系统、并发的理论基础

    一.基于UDP的套接字 udp套接字简单示例 import socket ip_port=('1.1.1.1',8181) BUFSIZE=1024 udp_server_client=socket. ...

  3. python之并发编程

    一 背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所 ...

  4. day20-多并发编程基础(一)

    重新写一下吧,系统奔溃了,以前写的完全没了,悲催,今日主要写进程 1. 进程的理论知识 2. python中的进程操作 开始今日份整理,加油,你是最胖的!!! 1. 进程的理论知识 1.1 操作系统的 ...

  5. python下的并发编程

    阅读目录 一 背景知识 二 python并发编程之多进程 三 python并发编程之多线程 四 python并发编程之协程 五 python并发编程之IO模型 六 补充:paramiko模块 七 作业 ...

  6. Cpython解释器下实现并发编程

    一 背景知识 二 python并发编程之多进程 三 python并发编程之多线程 四 python并发编程之协程 五 python并发编程之IO模型 六 补充:paramiko模块 七 作业 一 背景 ...

  7. Cpython解释器下实现并发编程——多进程、多线程、协程、IO模型

    一.背景知识 进程即正在执行的一个过程.进程是对正在运行的程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内容都 ...

  8. python之旅:并发编程

    一 背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所 ...

  9. 多并发编程基础 之进程 Process

    原贴  https://www.cnblogs.com/gbq-dog/p/10299663.html 1. 进程的理论知识 1.1 操作系统的背景知识 顾名思义,进程即正在执行的一个过程.进程是对正 ...

随机推荐

  1. 七牛云关联Windows图床

    1. 注册七牛云 七牛云 地址,需要在这里进行注册 2.完成实名认证 需要上传身份证的正反面以及支付宝做一下认证即可. 首先进入个人中心 然后进行实名认证 由于我已经认证过了,所以显示认证完成,未认证 ...

  2. HTML + CSS (上)

    HTML 概念: 超文本标记语言. 核心: 语义. 主体结构: <!doctype html> //告诉浏览器这是什么语言 html //主体 head //头文件 body //页面主体 ...

  3. Nginx基础优化

    Nginx基础优化 1.隐藏nginx header版本号 1.1查看版本号 [root@Nginx ~]# curl -I http://www.yunwei.cn HTTP/1.1 200 OK ...

  4. 转帖 使用eclipse创建之前没有创建的web.xml

    由于在下学习Java的时间不长,所以对于一些工具的使用不太熟悉,特别是eclipse,虽然这是一款强大的Java编译工具但是现有汉化版.所以在实际使用的时候难免会遇到各种各样的麻烦.今天就遇到了一个: ...

  5. php操作redis--字符串篇

    前提:已经安装好了redis和相关拓展 常用函数:set/get/decr/incr等 应用场景:普遍的key/value存储类型 连接: $redis = new Redis(); $redis-& ...

  6. React中Class的概念

    Class的概念 一.简介 javaScript是面向对象的编程语言,可以说所以的能够被描述的事.物或抽象的东西,都是可以是对象.而我们记录的对象,会有具有同样的属性和行为. 为了节省重写相同的代码. ...

  7. 深入理解Magento – 第十章、十一章(英文原版地址,仅供参考)

    深入理解Magento – 第十章 – Magento系统覆盖和升级 http://alanstorm.com/magento_upgrade_rewrite_override 深入理解MAGENTO ...

  8. 预处理+状态压缩+剪枝——codefoece 1209E

    那一步剪枝实在是没想到 #include<bits/stdc++.h> using namespace std; #define N 2005 struct Col{ ],Max[< ...

  9. python bs4解析网页时 bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to inst(转)

    Python小白,学习时候用到bs4解析网站,报错 bs4.FeatureNotFound: Couldn't find a tree builder with the features you re ...

  10. AcWing 199. 余数之和 (除法分块)打卡

    给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值. 例如j(5, 3)=3 mod 1 + 3 mod 2 + 3 mod ...