当前位置: 首页 > 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;其中有两个指…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...