day27_python_1124
1.内容回顾
2.今日内容
3.创建-进程Process
4.join方法
5.进程之间数据隔离
1.内容回顾
# 进程 :是计算机中最小的资源分配单位
# 进程的三状态 :就绪 运行 阻塞
# 并发和并行 :
# 并行 :在一个时刻上,有多个进程在被CPU计算
# 并发 :在一个时间段上,有多个进程在被CPU计算
# 同步异步 :
# 同步 :一件事情与另一件事情有一定的顺序
# 异步 :两件事情可以同时进行
# 阻塞和非阻塞:
# 阻塞 : input sleep recv accept recvfrom
# 非阻塞 :不需要等待就可以直接完成的事情
2.今日内容
# 进程
# 如何去在python代码中 启动一个进程
# 新的模块 :multiprocessing
# 进程模块 :启动进程、基础的进程信息的获取、管理
# 进程的同步
# 进程之间的数据共享
# 进程之间的通信
# 进程池
3.创建-进程Process
import osimport timefrom multiprocessing import Process# print(os.getpid()) #线程id def func(): time.sleep(1) print('hello',os.getpid()) if __name__ == '__main__': for i in range(10): Process(target=func).start() #开启进程 time.sleep(1) print('hello2',os.getpid())
# 几个概念 :
# 父进程 :父进程执行的过程中创建了子进程
# 子进程 :
# 主进程 :一般我们直接执行的那个程序就是主进程
# 为什么要有if __name__ == '__main__': windows操作系统开启子进程的方式问题
# 如何开启多个子进程 for while
getppid() #显示父进程
def func(): time.sleep(1) print('hello',os.getpid(),os.getppid()) if __name__ == '__main__': for i in range(3): p = Process(target=func) p.start() time.sleep(1) print('hello2',os.getpid())
# 如何给子进程传参数 ?
import timefrom multiprocessing import Process def func(num,name): print(num,'hello',name) if __name__ == '__main__': for i in range(10): p = Process(target=func,args=(i,'yuan',)) #(,)不能一个元素 p.start() #非阻塞 print('主进程')
# 子进程可以有返回值么?
# 不能有返回值
# 因为子进程函数中的返回值无法传递给父进程,因为内存隔离的问题
4.join方法
# 主进程会默认等待子进程结束之后才结束# 父进程要负责回收子进程占用的操作系统资源import timefrom multiprocessing import Process def wahaha(): time.sleep(3) print('in wahaha') if __name__ == '__main__': Process(target=wahaha()).start() print('主进程')
import timefrom multiprocessing import Process def send_mail(n): time.sleep(0.5) print('发送邮件%s'%n) if __name__ == '__main__': l = [] for i in range(10): p = Process(target=send_mail,args=(i,)) l.append(p) p.start() for p in l: p.join() #阻塞到所有子进程执行完 print('所有的邮件都已经发出')
5.进程之间数据隔离
from multiprocessing import Processn = 100def func(): global n n = n - 1if __name__ == '__main__': p_lst = [] for i in range(100): p = Process(target=func) p.start() p_lst.append(p) for p in p_lst: p.join() print(n)
day27_python_1124的更多相关文章
随机推荐
- Character
Character a = new Character(); Character.isUpperCase(a) 判断给点的字符是否是大写字符 Character.isLowerCase(a) 判断给定 ...
- 运用java反射机制获取实体方法报错,java.lang.NoSuchMethodException: int.<init>(java.lang.String)
错误的原因是我的Student实体,成员变量数据类型,使用了int基本数据类型,改成Integer包装类型即可.
- Java8-对map排序
1.Java8对map按key排序 /** * @author : fengkun * @date : 19-3-10 * 内容 : Java8对map按key排序 */ public class S ...
- Weekly Contest 126
前两周一直是一道,都不好意思写了.这周终于题目简单了,刷了三道. 1002. Find Common Characters Given an array A of strings made only ...
- Cannot redeclare C() (previously declared in .
在引入支付宝入口文件AopSdk.php的时候报错:Cannot redeclare C() (previously declared in D:\phpStudy\WWW\thinkphp\help ...
- Linux网络属性管理
Linux网络属性管理 局域网:以太网,令牌环网 Ethernet: CSMA/CD 冲突域 广播域 MAC:Media Access Control 48bits: 24bits: 24bits: ...
- VMware虚拟机扩展Ubuntu系统磁盘空间
1 首先给虚拟机扩容 虚拟机->设置->硬盘->实用程序->扩展磁盘容量 2 启动Ubuntu系统 2.1 打开终端安装gparted,sudo apt-get install ...
- 2019十大安卓手游折扣平台app排行榜
2019游戏版号陆续开放,玩家又有许多好游戏可以玩了. 小编就以当前最热门的十个游戏来点评手游折扣平台App排行榜吧! 排名第一的游戏: 少年西游记-新征程 老平台,集成SDK,良心平台,覆盖全网游戏 ...
- input清空和select重置
在添加成功之后,再次打开模态框添加数据,需要清空input和重置select标签 清空div下所有input的输入内容 $("#divId input").val("&q ...
- 13_文件系统访问列表_case语句及脚本选项
FACL:Filesystem Access Control List利用文件扩展保存额外的访问控制权限 setfacl: -m:设定 u:UID:perm g:GID:perm root@kali: ...