python基础(15多线程编程介绍)

news/2024/9/15 4:27:36/ 标签: python, 开发语言, 功能测试, 自动化, 面试

python_0">python系列文章目录

python基础(01变量&数据类型&运算符)
python基础(02序列共性)
python基础(03列表和元组)
python基础(04字符串&字典)
python基础(05集合set)
python基础(06控制语句)
python基础(07函数)
python基础(08类和对象)
python基础(09闭包&装饰器)
python基础(10异常处理)
python基础(11文件读取)
python基础(12迭代器&生成器)
python基础(13魔法方法介绍)
python基础(14内置函数介绍)


文章目录

  • python系列文章目录
  • 前言
  • 一、概念
  • 二、threading、Thread类
    • 1.例子1
    • 2.例子2
    • 3.例子3
  • 总结


前言

本文主要介绍多线程编程,所介绍的比较基础,理解即可,本文是python基础知识的最后一文。python基础系列文章一共更新了15篇,本文更新后,接下来会更新python中常见的一些面试题,有需求的朋友,可以关注一波,后期查看。


一、概念

进程
正在运行的程序实体,QQ,这个运行程序占据所有系统资源(CPU、内存、网盘资源),不能与其他进程共享资源

线程
一个进程里包括了一个或多个线程

并发
通过CPU的调度算法、让用户看上去同时执行,实际上CPu操作层面不是真正的同时

并行
真正的同时

注意
python GIL(global、interprter、lock)全局锁,只有一个线程在解释器中运行,python是伪多线程

二、threading、Thread类

  • 创建一个Thread实例,传递一个函数
  • 注意:看起来像并行,实际上是并发

1.例子1

python">#创建一个函数
import time
from threading import Threaddef func( name,sec):print("-------开始---------",name,'时间',time.ctime())time.sleep(sec)print("-------结束---------", name, '时间', time.ctime())#创建Thread实例,生成线程
t1=Thread(target=func,args=("线程1",2))
t2=Thread(target=func,args=("线程2",3))#启动线程执行
t1.start()
t2.start()#等待线程执行完毕,结束
t1.join()
t2.join()----------------------------------------->
-------开始--------- 线程1 时间 Sat Aug 31 21:02:34 2024
-------开始--------- 线程2 时间 Sat Aug 31 21:02:34 2024
-------结束--------- 线程1 时间 Sat Aug 31 21:02:36 2024
-------结束--------- 线程2 时间 Sat Aug 31 21:02:37 2024

2.例子2

python">#创建一个类
import time
from threading import Threadclass Thread_Demo:def func( self,name,sec):print("-------开始---------",name,'时间',time.ctime())time.sleep(sec)print("-------结束---------", name, '时间', time.ctime())t1=Thread(target=Thread_Demo().func,args=("线程1",2))
t2=Thread(target=Thread_Demo().func,args=("线程2",3))#启动线程执行
t1.start()
t2.start()#等待线程执行完毕,结束
t1.join()
t2.join()------------------------------------------------------------------------------->>
-------开始--------- 线程1 时间-------开始--------- 线程2 时间 Sat Aug 31 21:14:19 2024Sat Aug 31 21:14:19 2024
-------结束--------- 线程1 时间 Sat Aug 31 21:14:21 2024
-------结束--------- 线程2 时间 Sat Aug 31 21:14:22 2024

3.例子3

python">import datetime
import threading
import time
from threading import Threadlst=["搬砖"+str(i) for i in range(1,3)]def pop_item():while True:if len(lst)==0:break#lst.pop()item=lst.pop()print(threading.current_thread(),"还剩{}".format(len(lst)))time.sleep(1)if __name__=='__main__':start_time=datetime.datetime.now()#pop_item(lst)t1=Thread(target=pop_item,args=())t2=Thread(target=pop_item,args=())t1.start()t2.start()t1.join()t2.join()end_time=datetime.datetime.now()print((end_time-start_time).seconds)
----------------------------------------------------------------------
<Thread(Thread-1 (pop_item), started 6105100288)> 还剩1
<Thread(Thread-2 (pop_item), started 6121926656)> 还剩0
1

总结

本文主要简单介绍一下什么是多线程编程,知道python中是伪线程,了解其用法即可,python基础系列,基础知识更新完毕。接下来将持续更新python中的一些面试题,以及软件测试的面试题目。


http://www.ppmy.cn/news/1518755.html

相关文章

滚雪球学MyBatis-Plus(02):环境准备

环境准备 本地开发环境参考如下&#xff1a; 开发工具&#xff1a;IntelliJ IDEA 2021.3.2JDK版本&#xff1a; JDK 1.8Spring Boot版本&#xff1a;2.3.1.RELEASEMaven版本&#xff1a;Apache Maven 3.8.2MySQL&#xff1a;5.6 前言 在上期内容中&#xff0c;我们系统地介绍了…

【UE5】UMG C++父类绑定蓝图子类属性

有时我们在设计UMG时可能会使用到C父类来处理一些通用逻辑&#xff0c;如果我们想要在C父类中获取其派生子类的某个属性&#xff0c;如Image或Button等&#xff0c;我们可以通过使用UE提供的BindWidget元数据标签的方式来获取。 BindWidget BindWidget元数据标签在官方文档中…

【GIS系列】多源异构原始影像解析:策略模式与规则引擎的应用

作者&#xff1a;后端小肥肠 &#x1f347; 我写过的文章中的相关代码放到了gitee&#xff0c;地址&#xff1a;xfc-fdw-cloud: 公共解决方案 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 1. 前言 在遥感技术和地球观测领域&#…

学习记录——day37 C++ 基础概念 字符串 命名空间

目录 一、C相关概念 二、面向对象 三、C框架 四、输出流对象&#xff1a;cout 五、输入流对象 cin 六、输入流对象 输出流对象 示例 1、大小写转换 2、输出斐波那契数列 3、进制转换 宽度 精度 七、命名空间 namespace 1、命名空间的意义 2、程序中的标识符&#xff0…

【学习笔记】第三章深度学习基础——Datawhale X李宏毅苹果书 AI夏令营

局部极小值与鞍点 梯度为0的点我们统称为临界点&#xff0c;包括局部极小值、鞍点等 局部极小值和鞍点的梯度都为0&#xff0c;那如何判断呢&#xff1f; 先请出我们损失函数&#xff1a;L(θ)&#xff0c;θ是模型中的参数的取值&#xff0c;是一个向量。 由于网络的复杂性&a…

React基础面试题

React 面试题 以下是面试官最有可能问到的 50 个 React 面试题和答案。为方便你学习&#xff0c;我对它们进行了分类&#xff1a; 基本知识React 组件React ReduxReact 路由 基本知识 1. 区分Real DOM和Virtual DOM Real DOMVirtual DOM1. 更新缓慢。1. 更新更快。2. 可以…

那么多编程语言,先学哪个?

简单介绍一下几种主要的语言&#xff1a; C&#xff0c;是一种面向对象的编程语言&#xff0c;常用于开发游戏、操作系统和嵌入式系统等性能要求比较高的场景。如果你对这些领域感兴趣&#xff0c;C是一个很好的选择。 Java&#xff0c;也是面向对象的编程语言&#xff0c;特点…

前端宝典二十三:Array最常用的34个方法

这里列举了Array最常用的34个方法 其中静态方法两个、实例方法32个&#xff0c;对他们进行了分类比较&#xff0c;有助于更好的掌握。 一、前言&#xff1a;手写一个深拷贝 以下是一个用 JavaScript 手写的深拷贝方法&#xff0c;考虑了正则表达式、日期对象、数组和普通对象…

12 对话模型微调2

1 P-Tuning P-Tuning 是在 Prompt-Tuning的基础上&#xff0c;通过新增 LSTM 或 MLP 编码模块来加速模型的收敛&#xff1b; 之前的实验也看到了使用prompt训练速度很慢&#xff0c;那么P-Tuning呢 参数占比&#xff1a; trainable params: 5,267,456 || all params: 1,308,37…

Windows服务器应急响应(下)

目录 介绍步骤 介绍 进程&#xff08;Process&#xff09;是计算机中的程序关于某数据集合上的一次运行活动&#xff0c;是系统进行资源分配和调度的基本单位&#xff0c;是操作系统结构的基础。在早期面向进程设计的计算机结构中&#xff0c;进程是程序的基本执行实体&#x…

sql 优化,提高查询速度

文章目录 一、前言二、建议2.1 使用索引2.2 避免使用select *2.3. 使用表连接代替子查询2.4. 优化WHERE子句&#xff0c;减少返回结果集的大小2.5 用union all代替union2.6 使用合适的聚合策略2.7 避免在WHERE子句中使用函数2.8 使用EXPLAIN分析查询2.9 小表驱动大表2.10 使用窗…

PHP程序设计教案

文章目录&#xff1a; 一&#xff1a;前言 1.什么是PHP 2.环境安装 3. 语法规范 3.1 注释 3.2 分隔符 3.3 其他规范 二&#xff1a;基础语法 1.输出 1.1 echo 1.2 print 1.3 var_dump类型和值 1.4 print_r()易读 2.常量变量 2.1 常量 2.1.1 define()/const…

vue前端实现登录页面的验证码(新手版)

一、搭建vue前端登录页面 <template><div style"width: 800px; margin: 5px auto; background-color: #17ecf3"><div align"center"><h2>用户登录</h2></div><div style"width: 60%; margin: 1px auto"…

如何解决`.gitignore`规则不生效或已提交相关文件的问题

前言 在使用Git进行版本控制时&#xff0c;.gitignore文件是一个非常有用的工具&#xff0c;它可以帮助我们排除不需要跟踪的文件或目录。然而&#xff0c;在实际开发过程中&#xff0c;有时我们会遇到.gitignore规则不生效的情况&#xff0c;或者是不小心将不应提交的文件提交…

RabbitMQ 入门教程

RabbitMQ 入门教程 1. 引言 RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;实现高级消息队列协议 (AMQP)。它能帮助开发者实现应用程序间的解耦、异步处理、流量削峰等需求。 2. 安装与配置 2.1 安装RabbitMQ 2.1.1 Ubuntu bash sudo apt-get update sudo apt…

动态IP池在数据抓取中的应用与优势

随着互联网技术的快速发展&#xff0c;数据抓取&#xff08;Web Scraping&#xff09;已经成为获取互联网信息的重要手段。然而&#xff0c;在进行大规模数据抓取时&#xff0c;往往会遇到反爬虫机制、IP封禁等问题。动态IP池作为一种解决方案&#xff0c;可以有效地绕过这些障…

告别手动记录,音频转文字软件助力会议记录新高度

如果你突然被领导指派去参与一场会议&#xff0c;身边没有纸笔要怎么记录转达会议内容呢&#xff1f;我往往会采用手机的录音功能来记录会议内容会后再进行整理。这次我们就来探索音频转文字工具怎么提升我们的工作效率。 1.365在线转文字 链接传送&#xff1a;https://www.p…

微服务优缺点以及如何拆分

微服务优点 1,降低代码逻辑复杂度。 单个微服务模块相当于一个项目&#xff0c;开发人员只用关心这个模块的逻辑即可。 2&#xff0c;技术栈更加灵活 不同的微服务可以使用合适的语言架构实现&#xff0c;然后把服务注册到一个注册中心即可相互调用。 3&#xff0c;按需伸缩 当…

人工智能工作级开发者认证 HCCDP – AI 真题2 答案

1.GBDT通过bagging的防范可以对样本和特征都进行采集。答案:FALSE 原因:GBDT可以对样本采集,不能对特征采集 2.深度学习是机器学习的一个分支。答案:true 3.softmax激活函数的作用是减少及时量和防止梯度消失。答案false 4.在建筑施工现场,基于定制化的图像识别目标检测系统,…

Node.js 安装与使用及连接 MongoDB 的详细教程

下面我将详细讲解如何安装 Node.js、介绍 Node.js 的脚手架工具、使用 Express 脚手架创建项目&#xff0c;以及如何安装和连接 MongoDB。 一、Node.js 安装 下载 Node.js&#xff1a; 访问 Node.js 官方网站。 根据你的操作系统选择最新的 LTS&#xff08;长期支持版&#x…