当前位置: 首页 > news >正文

Python 笔记03(多线程)

一 打开命令行,查看本机IP

windows + r

命令行输入:cmd + ipconfig

然后查看IPv4的地址:192.168.1*6.1

ipconfig

二 函数式多进程

from multiprocessing import Process
import os, timedef func(name):print('进程的ID:', os.getpid())print('父进程的ID:', os.getppid())print('当前进程的名称:', name)time.sleep(3)if __name__ == '__main__':# aprocess_lst = []for i in range(10):p = Process(target=func, args=(f'进程的名称为:{i}',))  # 默认调用init# 启动进程p.start()process_lst.append(p)for p in process_lst:p.join()    # 阻塞主进程,等待P进程执行完后继续print('主进程结束!')

三 继承式多进程

p.join() 等待子进程结束后才进行下一步的操作

from multiprocessing import Process
import time, osclass MyProcess(Process):def __init__(self, name):  # 初始化方法, 创建MyProcess时被调用Process.__init__(self)   # 调用父类的初始化self.name = name# 继承式必须重写run方法def run(self):print('进程的ID:', os.getpid())print('父进程的ID:', os.getppid())print('当前进程的名称:', self.name)time.sleep(3)if __name__ == '__main__':process_lst = []for i in range(10):p = MyProcess(f'进程的名称:{i}')p.start()process_lst.append(p)for p in process_lst:p.join()print('主进程执行完毕')

四 进程间通信 (使用队列的方式, queue)

from multiprocessing import Process, Queue
import os
import random# 入队的进程
class WriteProcess(Process):def __init__(self, name, q):Process.__init__(self)self.name = nameself.q = qdef run(self):print(f'进程的名称:{self.name}, 进程的ID:{os.getpid()}')# 入队操作for i in range(1, 6):x = random.randint(1000, 6666)print(f'入队元素:{x}')self.q.put(x)print('入队执行结束')# 出队的进程
class ReadProcess(Process):def __init__(self, name, q):Process.__init__(self)self.name = nameself.q = qdef run(self):print(f'进程的名称:{self.name}, 进程的ID:{os.getpid()}')# 入队操作for i in range(1, 6):print(f'出队元素---------->{self.q.get()}')  # get是队列的方法if __name__ == '__main__':# 主程序queue = Queue()  ## 创建子进程的对象write_process = WriteProcess('writer', queue)read_process = ReadProcess('reader', queue)# 启动进程write_process.start()read_process.start()

五 管道的当时做通信 (pipe)

1 需要在进程的init中配置:self.p = pipe 

2 数据发送使用:p.send(value)

3 数据接收使用: p.recv(value)

from multiprocessing import Process, Pipe
import osclass WriteProcess(Process):def __init__(self, name, pipe):Process.__init__(self)self.name = nameself.p = pipe  # pipe 是方法的局部变量,而self.p是类的实例属性,可以在类的任意方法中使用,而PIPE只能在init中使用def run(self):print(f'进程的名称:{self.name}, 进程的ID:{os.getpid()}')for i in range(1, 9):# 调用管道发送数据的方法: sendself.p.send(i)print(f'写入进程执行完毕')class ReadProcess(Process):def __init__(self, name, pipe):Process.__init__(self)self.name = nameself.p = pipedef run(self):print(f'进程的名称:{self.name}')for i in range(5):print(f'出队元素:{self.p.recv()}')  # recv()接收数据if __name__ == '__main__':#p1, p2 = Pipe()  # p1, p2指管道的两点,每一端对应一个进程wb = WriteProcess('writer', p1)rp = ReadProcess('reader', p2)# 启动进程wb.start()rp.start()

六 进程池

1 p.apply(run, ('任务' + str(i),))   # 同步执行

2 p.apply_async(run, ('任务' + str(i),))   # 异步执行

# 函数式多进程
from multiprocessing.pool import Pool
import os, time, randomdef run(name):start = time.time()  # 开始时间print(f'任务名称:{name}, 进程的ID:{os.getpid()}')time.sleep(random.choice([1, 2, 3, 4, 5]))  # 注意choice 要有()end = time.time()print(f' ________________+ 任务名称:{name}, 进程的ID:{os.getpid()}, 耗时:{round(end - start, 2)}')if __name__ == '__main__':p = Pool(5)  # 5个进程的进程池# 5个进程,10个任务for i in range(10):# p.apply_async(run, ('任务' + str(i),))   # 异步执行p.apply(run, ('任务' + str(i),))   # 同步执行p.close()p.join()print('主进程结束')

相关文章:

Python 笔记03(多线程)

一 打开命令行,查看本机IP windows r 命令行输入:cmd ipconfig 然后查看IPv4的地址:192.168.1*6.1 ipconfig 二 函数式多进程 from multiprocessing import Process import os, timedef func(name):print(进程的ID:, os.g…...

mysql-4:SQL的解析顺序

SQL语句的解析顺序 文章目录 SQL语句的解析顺序编写顺序与解析顺序解析顺序关键字FROMONOUTER JOINWHEREGROUP BYHAVINGSELECTDISTINCTORDER BYLIMIT 解析流程流程分析流程说明WHERE条件解析顺序 编写顺序与解析顺序 编写顺序 SELECT DISTINCT < select_list > FROM &l…...

如何通过优化Read-Retry机制降低SSD读延迟?

近日,小编发现发表于2021论文中,有关于优化Read-Retry机制降低SSD读延迟的研究,小编这里给大家分享一下这篇论文的核心的思路,感兴趣的同学可以,可以在【存储随笔】VX公号后台回复“Optimizing Read-Retry”获取下载链接。 本文中主要基于Charge Trap NAND架构分析。NAND基…...

matlab自动生成FPGA rom源码

1 matlab 源码 close all clear all clci=0:1:(300000-100-1); x=300000./(100+i); x=x./2; x=round(...

消息队列(RabbitMQ+RocketMQ+Kafka)

消息队列是一种应用程序之间通过异步通信进行数据交换的通信模式 消息队列的类型&#xff1a; 点对点&#xff0c;一对一的消息传递模型&#xff0c;其中每个消息只能被一个接收者消费。发送者将消息发送到队列中&#xff0c;而接收者从队列中获取消息并进行处理&#xff0c;…...

python判断语句

1.布尔类型 进行判断&#xff0c;只有是(True&#xff1a;本质上是一个数字&#xff0c;记作1)和否(False&#xff1a;本质上是一个数字&#xff0c;记作0)。 定义变量存储布尔类型数据: 变量名称 布尔类型字面量 a True代码演示&#xff1a; a True print(type(a))输出结…...

C# 虚方法

在C#中&#xff0c;虚方法&#xff08;virtual methods&#xff09;是一种允许派生类&#xff08;子类&#xff09;覆盖&#xff08;重写&#xff09;基类&#xff08;父类&#xff09;中的方法的技术。虚方法的定义和使用如下&#xff1a; 基类中定义虚方法&#xff1a; pub…...

微信小程序,动态设置三级联动, 省市区街道

1.第一步 传parentId0 查询省份 2.第二步 选择省份,传pathId选择省份的pathId, 不传parentId,会查询出 市/县数据 3.第三步 根据选择县的parentId 查询街道数据,传parentId选择的县id 4.选择结果回显 显示所选择的 path 以/分割 取最后一级<van-dropdown-menu…...

Learn Prompt- Midjourney 图片生成:Image Prompts

Prompt 自动生成 前不久&#xff0c;Midjourney 宣布支持图片转 prompt 功能。 原始图片​ blueprint holographic design of futuristic Midlibrary --v 5Prompt 生成​ 直接输入 /describe 指令通过弹出窗口上传图像并发送&#xff0c;Midjourney 会根据该图像生成四种可…...

基于微信小程序的健身房私教预约平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…...

安卓Compose(二)

在上一篇博客中&#xff0c;我们已经了解了安卓Compose的一些基本概念以及使用方法&#xff0c;接下来我们将继续深入学习。 一、Compose的基础组件 文本组件(Text) 文本组件是Compose中最基本的组件之一&#xff0c;用于在界面上显示文本。使用方式如下&#xff1a; // 定…...

TCP 和 UDP哪个更好

传输控制协议 &#xff08;TCP&#xff09; 和用户数据报协议 &#xff08;UDP&#xff09; 是互联网的基础支柱&#xff0c;支持从网络源到目的地的不同类型的数据传输。TCP更可靠&#xff0c;而UDP优先考虑速度和效率。本文解释了两种协议的工作原理&#xff0c;并详细讨论了…...

Spring Boot 如何实现单点登录(SSO)

当今的应用程序越来越多地采用了微服务架构&#xff0c;这就引出了一个重要的问题&#xff1a;如何实现单点登录&#xff08;Single Sign-On&#xff0c;简称SSO&#xff09;来确保用户在多个微服务之间无需重复登录。Spring Boot是一个流行的Java框架&#xff0c;它提供了一些…...

C#中的(++)和(--)运算符

目录 背景: 的前加 效果展示:​ 的后加 效果展示 :​ 总结: 背景: 自增和自减运算符存在于C/C/C#/Java等高级语言中&#xff0c;它的作用是在运算结束前(前置自增自减运算符 )或后(后置自增自减运算符 )将 变量的值加(或减)1。 在C#中&#xff0c;和--是自增和自减运…...

SVG鼠标漫游

鼠标漫游 鼠标漫游就是通过移动光标和滚轮&#xff0c;完成画布缩放、移动的交互过程。 svg 绘图使用原点在左上角的坐标系统&#xff0c;一个单位代表一像素。这里的像素不能简单理解为屏幕像素&#xff0c;是一个用户单位。svg 的 width 和 height 属性决定图像在用户系统的…...

关于Github报SSL_ERROR_SYSCALL的解决方案

最近在运行RN项目的时候发现,在我pod install命令安装pod包时产生了 SSL_ERROR_SYSCALL 的错误,如下所示。 [!] Error installing CocoaAsyncSocket [!] /usr/bin/git clone https://github.com/robbiehanson/CocoaAsyncSocket.git /var/folders/v0/2435fl9178sd4r2_1mdgk_r…...

Redis 集群搭建教程

一、介绍 Redis 集群有着高可用、易扩展、更好的性能等优势&#xff0c;本文主要是实战搭建一个三主三从的 Redis 集群。 正常来说&#xff0c;搭建 Redis 集群需要 6 台服务器。为了简单一点&#xff0c;本文通过一台服务器&#xff0c;6 个端口&#xff0c;搭建一个 Redis …...

图形处理软件Photoshop Elements 2020 mac中文版 ps简化版

Photoshop Elements 2020 mac是一款非常实用的图形处理工具。ps elements 2020 mac中文版可以帮助您自动生成照片和视频作品的功能&#xff0c;采用Adobe Sensei AI技术可进行图像组织、编辑和创建等。Photoshop Elements 2020 for Mac激活版可以帮助您轻松整理照片和视频&…...

opencv for unity package在unity中打开相机不需要dll

下载OpenCV for Unity 导入后&#xff0c;里面有很多案例 直接打开就可以运行 打开相机...

[Linux入门]---进程状态

文章目录 1.进程主要状态进程运行状态进程阻塞状态进程的挂起状态 2.Linux进程状态Linux进程内核源代码①R运行状态②S睡眠状态③D磁盘休眠状态T停止状态④X死亡状态⑤Z僵尸状态⑥孤儿进程 3.总结 1.进程主要状态 进程运行状态 ①内存中有一个运行队列&#xff0c;其中有两个指…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...