python基础知识(二十一)
进程的状态
在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞。
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全。
单进程
import time
def dance():for i in range(1,4):print("我在跳舞",i)time.sleep(2)
def sing():for i in range(1,4):print("我在唱歌",i)time.sleep(2)
if __name__ == '__main__':dance()sing()
结果为:
多进程(两个进程同时执行)
import time
from multiprocessing import Process #导入进程的类
def dance():for i in range(1,4):print("我在跳舞",i)time.sleep(2)
def sing():for i in range(1,4):print("我在唱歌",i)time.sleep(2)
if __name__ == '__main__':p1=Process(target=dance) #创建进程,target指向的值为函数p2=Process(target=sing)p1.start() #启动进程p2.start()
结果为:
父、子进程
import time,os
from multiprocessing import Process #导入进程的类
xiaogou=10
def dance():global xiaogouxiaogou+=20print("dance小狗",xiaogou)for i in range(1,4):print("我在跳舞",i,"子进程",os.getpid(),"父进程",os.getppid())time.sleep(2)
def sing():global xiaogouxiaogou+=30print("sing小狗",xiaogou)for i in range(1,4):print("我在唱歌",i,"子进程",os.getpid(),"父进程",os.getppid())time.sleep(2)
if __name__ == '__main__':print("主进程",os.getpid())p1=Process(target=dance) #创建进程,target指向的值为函数p2=Process(target=sing)p1.start() #启动进程p2.start()
结果为:
进程池
from multiprocessing import Pool
import os,time
def worker(name):start=time.time()print(name,"开始",start)time.sleep(2)end=time.time()print(name,"结束",end,"执行了",end-start)
if __name__ == '__main__':pool=Pool(3)for i in range(7):pool.apply(worker,args=(i+1,)) #把进程放到进程池pool.close() #关闭,不允许在有新的进程进来pool.join() #主进程阻塞,等待子进程结束print("进程结束")
结果为:
迅雷下载器
from multiprocessing import Pool
import os,time
def downLoad(movie):i = 0while i<5:print(movie,"下载了%.2f%%"%((i+1)/5*100))time.sleep(2)i=i+1return movie+"下载完成"
def downOver(contnet):print(contnet,"------")
if __name__ == '__main__':po=Pool(3)movieList=["西红柿首富","我不是药神","海绵宝宝","小猪佩奇","海王"]for name in movieList: #启动进程downLoad,把电影名传入,下载完成后调用downOver函数,进行提示po.apply_async(downLoad,args=(name,),callback=downOver)po.close()po.join()
结果为:
from multiprocessing import Queue,Process
import os,time
def shengChanZhe(q):bzList=["小龙虾","韭菜鸡蛋","猪肉大葱","芹菜猪肉","三鲜","茴香"]for bz in bzList:print("包饺子",bz)q.put(bz)time.sleep(3)
def xiaoFeiZhe(q):while True:try:b=q.get(block=False,timeout=2)print("吃饺子",b)time.sleep(2)except:print("滚蛋,哥不吃了")break
if __name__ == '__main__':q=Queue(6)p1=Process(target=shengChanZhe,args=(q,))p2=Process(target=xiaoFeiZhe,args=(q,))p1.start()p2.start()
结果为:
python基础知识(二十一)相关推荐
- python 日志输出为json格式文件_Py修行路 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)...
一.日志模块 两种配置方式:1.config函数 2.logger #1.config函数 不能输出到屏幕 #2.logger对象 (获取别人的信息,需要两个数据流:文件流和屏幕流需要将数据从两个数据 ...
- python基础知识二
1.python中的三个读read(),readline()和readlines() 我们谈到"文本处理"时,我们通常是指处理的内容.Python 将文本文件的内容读入可以操作的字 ...
- CV:计算机视觉技术之图像基础知识(二)—以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础)
CV:计算机视觉技术之图像基础知识(二)-以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础) 目录 ...
- Python基础知识入门(二)
Python基础知识入门(一) Python基础知识入门(三) Python基础知识入门(四) Python基础知识入门(五) 一.数字类型 Python 数字数据类型用于存储数值.数据类型是不允许改 ...
- 2.Python 基础知识
文章目录 Python 基础知识 知识点一 : 注释 1.单行注释 2.多行注释 知识点二 : 变量 知识点三 : 数据类型 1.数字类型 1.1 整型 1.2 浮点型 1.3 复数类型 2.字符串 ...
- python基础知识思维导图总结
今天给同学用思维导图整理了python基础知识,供大家复习参考学习,希望每天都有进步. 最后增加了列表推导式的案例和使用,学会了一定很香! 鸡汤几点: 没有目标永远不知道方向在哪? 不去尝试永远不知道 ...
- python的基础知识可以应用到哪方面-Python基础知识
python基础 python的诞生 2002年,python 2.x 2008年,python 3.x python的命名 马戏团的名称 python简介 简单.易学 持快速开发. 跨平台. 开源. ...
- python爬虫数据可视化_python 爬虫与数据可视化--python基础知识
摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...
- Python基础知识有哪些?你都知道吗
Python基础知识有哪些?这几年,人工智能.数据分析等各行业的兴起,让更多人知道了Python,让Python是又火了一把.Python作为一个简介又实用的编程语言,让许多想从事信息技术行业的人准备 ...
- Python 基础知识学习笔记——NumPy
Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...
最新文章
- 可以获取python整数类型帮助的是什么-下列选项中可以获取Python整数类型帮助的是...
- new,delete总结
- 【Deep Learning】Tensorflow实现逻辑回归
- 从《芈月传》看热门IP在互联网视频行业的“前世今生”
- 网页静态化和网页伪静态化之间的区别与选择
- 【BZOJ1069】【SCOI2007】—最大土地面积(凸包+旋转卡壳)
- 清华大学博士,就12年前抄袭一事公开道歉
- 千方科技的中场战事:选择、进化与野望
- Android学习小Demo(12)TodoList实现ListView的分组实现
- SaaS服务商盘点之ERP篇
- PopClip:你会热爱的文本穿梭机
- Mac 安装JDK 8
- 电子测量-实战:电压放大器的设计与测试
- 编译原理 语法分析程序
- QT读取局域网共享文件夹文件内容 解决不同网段无法访问共享文件夹问题
- sap销售发货的流程_现金及快速销售流程
- VMware14 kali linux安装教程
- C++参考手册中文网站
- class07:Express框架、中间件
- 登陆远程kvm_KVM远程VMM管理
热门文章
- 下标要求数组或指针类型_「IEC 61131-3」衍生数据类型
- python中sys模块有什么用_Python 学习笔记 (8)—— sys模块
- Elasticsearch:Dynamic field mapping
- 转行学python 数据分析统计服_25岁转行数据分析的学习计划
- npm 卸载及安装流程
- 【运维面试】帮你找到公司的业务及运维负责内容-面试前必看
- 【茗创科技】最酷的脑功能连接图--Circos安装教程
- 如何使用eeglab画出理想的脑电图
- 西卡编程教学 C语言教学视频(共32课更新完毕) - 『 西卡教学 』 - 西卡学院 - Powered by Pureing Labs!...
- 脑电EEG静息态数据重新分段