用python解释进程与协程(python实例二十八)

目录

1.认识Python

2.环境与工具

2.1 python环境

2.2 Visual Studio Code编译

3.创建进程池,异步执行多个任务

3.1 代码构思

3.2 代码示例

3.3 运行结果

4. 模拟协程堵塞

4.1 代码构思

4.2 代码示例

4.3 运行结果

5.总结


1.认识Python

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字或标点符号,它具有比其他语言更有特色的语法结构。

 

2.环境与工具

2.1 python环境

在Windows上使用命令行窗口查看所安装的python版本

python --version

2.2 Visual Studio Code编译

Visual Studio Code是一款由微软开发且跨平台的免费源代码编辑器。该软件以扩展的方式支持语法高亮、代码自动补全、代码重构功能,并且内置了命令行工具和Git 版本控制系统。

3.创建进程池,异步执行多个任务

3.1 代码构思

在缓存中实现保留一定数量的进程,当有任务是,从进程池中取出进程执行任务,运行完成后进程归还进程城池;当全部进程都在运行时,新任务请求使用进程的需求将进入等待状态,直到有进程完成。

3.2 代码示例

from multiprocessing import Pool
import os
import time
import randomdef test(name,n_second):print('进程号',os.getpid(),':你好,我是',name)print('进程号',os.getpid(),':要思考',str(n_second),'秒')time.sleep(n_second)print('进程号',os.getpid(),':思考',str(n_second),'秒,结束了。。')if __name__ == '__main__':pool_obj=Pool(3)for i in range(6):#生成一个随机整数,作为test()函数的参数j=random.randint(1,20)pool_obj.apply_async(test,('person'+str(i),j,))pool_obj.close()pool_obj.join()print('主进程结束')

3.3 运行结果

4. 模拟协程堵塞

4.1 代码构思

代码中定义两个协程,并演示了协程之间的切换,每个协程运行过程总遇到阻塞立即切换到另一个协程,使用猴子没顶模拟堵塞。

4.2 代码示例

from gevent import monkey
monkey.patch_all()
import gevent
import time# 协程调用函数
def work(name):print(name, '在工作')print(name, '累了,歇一会。。')# 模拟阻塞time.sleep(2)print(name, '工作完成')def rest(name, n):print(name, '在休息')print(name, '歇息好了')# 模拟阻塞time.sleep(2)print(name, '又开始休息')if __name__ == '__main__':# 创建协程对象g1 = gevent.spawn(work, '张三')g2 = gevent.spawn(rest, '李四', 6)gevent.joinall([g1, g2])

4.3 运行结果

5.总结

通过运行进程与协程的代码示例,呈现了处理器处理多任务时候的判别方式,方便理解任务并行与通道堵塞的原理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/51099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Javascript前端面试(七)

JavaScript 部分 1. JavaScript 有哪些数据类型,它们的区别? JavaScript 共有八种数据类型,分别是 Undefined、Null、Boolean、 Number、String、Object、Symbol、BigInt。 其中 Symbol 和 BigInt 是 ES6 中新增的数据类型: ●Sym…

04-Charles中的Map Remote和Map Local介绍

Charles提供了Map Remote和Map Local两个功能。 Map Remote是将指定的网络请求重定向到另一个网址。Map Local是将指定的网络请求重定向到本地文件。 一、Map Remote 假设代码中调用了接口A,但是接口A的响应结果不能满足需求;此时,有另一个…

SAPUI5基础知识18 - 自定义CSS和主题色

1. 背景 在上一篇博客中,我们通过使用SAPUI5提供的CSS类实现元素间距的调整。在本篇博客中,让我们看一下如何实现自定义的CSS样式。 2. 背景知识 2.1 CSS基础语法 CSS,全称为级联样式表(Cascading Style Sheets)&a…

【更新2023】省级农林牧渔业产值面板数据 含分项 1949-2023

省级农林牧渔业产值面板数据是研究农业经济和区域发展的重要资源。这些数据可以被用来分析不同省份间农业产值的时空变化及其影响因素,探讨政策对农业发展的影响,评估农业现代化和可持续发展水平,以及比较不同地区农业产值的竞争力和效率。此…

python学习笔记——字符串

一、创建字符串 1.我们可以使用引号( 或 " )来创建字符串。创建字符串很简单,只要为变量分配一个值即可。 var1 Hello World! var2 "Runoob" 二、访问字符串中的值 1.Python 访问子字符串,可以使用方括号 [] 来截取字符串。…

在Android上实现汉字笔顺动画效果——HanZiWriter

序,万般皆是命,半点不由人。 Hanzi Writer 是 javascript 免费开源库,根据汉字书写时按照笔画顺序的特征,可以播放正确笔画顺序的描边动画和练习测试。支持简体字和繁体字。可以让全球用户能够通过手绘模仿的方式来学习和练习书写…

Python网络爬虫详解:实战豆瓣电影信息采集

文章目录 前言一、爬虫是什么?二、常用库及其作用1.Requests2.BeautifulSoup3. lxml4. Scrapy5. Selenium6. PyQuery7. Pandas8. JSON9. Time 三、实现步骤步骤一:环境准备步骤二:数据采集步骤三:数据处理步骤四:数据存…

算法日记day 19(找树左下角的值|路径总和)

一、找树左下角的值 题目: 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 思路:…

[Windows CMD] 检测网络连通性 ping

ping 是一个非常常用的网络工具,用于测试网络连接的可达性和测量网络延迟。它通过发送 ICMP (Internet Control Message Protocol) Echo Request 数据包到目标主机,并等待接收回显应答 (Echo Reply) 来工作。ping 命令可以帮助您快速检测网络问题&#x…

2021真题-架构师案例(四)

问题1(16分) 针对该系统功能,赵工建议解释器架构风格,李工建议管道过滤架构风格,王工则建议饮食调用,该系统从灵活性和可扩展性考虑,应采用哪种? 解析: 管道-过滤器&am…

lua 游戏架构 之 游戏 AI (九)ai_mgr Ai管理

定义ai_mgr的类,用于管理游戏中实体的AI组件。 先定义 AI行为枚举和优先级: lua 游戏架构 之 游戏 AI (八)ai_tbl 行为和优先级-CSDN博客https://blog.csdn.net/heyuchang666/article/details/140712839?spm1001.2014.3001.55…

[原理] 可变性卷积(deformable convolution)原理及代码解释

文章目录 前言提出问题核心思想代码理解模块初始化forward过程self.p_convself._get_pself._get_x_qself._reshape_x_offset 参考文献 前言 代码见:https://github.com/4uiiurz1/pytorch-deform-conv-v2/blob/master/deform_conv_v2.py 论文:https://ar…

【数据结构】使用栈实现综合计算器

首先初始化两个栈,数栈(numStack)用于存放数据,符号栈(operStack)用于存放运算符 计算思路 1.通过一个index值(索引)来遍历表达式 2.如果发现扫描到一个数字,就直接入数栈…

Python | TypeError: ‘function’ object is not subscriptable

Python | TypeError: ‘function’ object is not subscriptable 在Python编程中,遇到“TypeError: ‘function’ object is not subscriptable”这一错误通常意味着你尝试像访问列表、元组、字典或字符串等可订阅(subscriptable)对象那样去…

Javascript面试基础6(下)

获取页面所有checkbox 怎样添加、移除、移动、复制、创建和查找节点 在JavaScript中,操作DOM(文档对象模型)是常见的任务,包括添加、移除、移动、复制、创建和查找节点。以下是一些基本的示例,说明如何执行这些操作&a…

Java语言程序设计——篇九(2)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 枚举类型 枚举类型的定义枚举类型的方法实战演练 枚举在switch中的应用实战演练 枚举类的构造方法实战演练 枚举类型的定义 [修饰符] enum 枚举…

医院影像平台源码,C/S体系结构的C#语言PACS系统全套商业源代码

医学学影像临床信息系统具有图像采集、显示、存储、传输和管理等功能,支持DICOM影像设备和非DICOM影像设备,可以识别CT、MR、CR/DR、X光、DSA、B超、NM、SC等设备的图像类型,可对数字影像进行无损压缩和有损压缩处理。C/S体系结构的多媒体数据…

湖仓一体架构解析:数仓架构选择(第48天)

系列文章目录 1、Lambda 架构 2、Kappa 架构 3、混合架构 4、架构选择 5、实时数仓现状 6、湖仓一体架构 7、流批一体架构 文章目录 系列文章目录前言1、Lambda 架构2、Kappa 架构3、混合架构4、架构选择5、实时数仓现状6、湖仓一体架构7、流批一体架构 前言 本文解析了Lambd…

Verilog语言和C语言的本质区别是什么?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 用老石的一句话其实很好说…

ssm框架整合,异常处理器和拦截器(纯注解开发)

目录 ssm框架整合 第一步:指定打包方式和导入所需要的依赖 打包方法:war springMVC所需依赖 解析json依赖 mybatis依赖 数据库驱动依赖 druid数据源依赖 junit依赖 第二步:导入tomcat插件 第三步:编写配置类 SpringCon…