python进程和线程(05)

news2025/4/15 21:38:48

python进程和线程(05)

文章目录

    • python进程和线程(05)
      • 1 python进程和线程
      • 1.1 进程和线程概念
      • 1.2 并行执行
      • 1.3 核心使用语法_threading模块
      • 1.4 多线程编程
        • 1.4.1 案例单线程不能满足情况如下:
        • 1.4.2 多线程
          • 1.4.2.1 多线程创建语句
          • 1.4.2.2 案例
        • 1.4.2 多线程传参使用
          • 1.4.2.1 多线程传参使用 args 和 kwargs
          • 1.4.2.2 使用案例

1 python进程和线程

1.1 进程和线程概念

参考视频:黑马保姆级视频

进程:就是一个程序,运行在系统之上,那么便称之这个程序为一个
运行进程,并分配进程ID方便系统管理。
线程:线程是归属于进程的,一个进程可以开启多个线程,执行不同
的工作,是进程的实际工作最小单位。

进程就好比一家公司,是操作系统对程序进行运行管理的单位
线程就好比公司的员工,进程可以有多个线程(员工),是进程实际的工作者
操作系统中可以运行多个进程,即多任务运行
一个进程内可以运行多个线程,即多线程运行

注意点:

进程之间是内存隔离的,即不同的进程拥有各自的内存空间。这就类似于不同的公司拥有不同的办公场所。
线程之间是内存共享的,线程是属于进程的,一个进程内的多个线程之间是共享这个进程所拥有的内存空间的。
这就好比,公司员工之间是共享公司的办公场所。

在这里插入图片描述

1.2 并行执行

并行执行的意思指的是同一时间做不同的工作。
进程之间就是并行执行的,操作系统可以同时运行好多程序,这些程序都是在并行执行。
除了进程外,线程其实也是可以并行执行的。
也就是比如一个Python程序,其实是完全可以做到:
。一个线程在输出:你好
。一个线程在输出:Hello
像这样一个程序在同一时间做两件乃至多件不同的事情,我们就称之为:多线程并行执行

1.3 核心使用语法_threading模块

绝大多数编程语言,都允许多线程编程,Pyhton也不例外。
Python的多线程可以通过threading模块来实现。

import threading

thread_obj=threading.Thread([group [, target [, name [, args [, kwargs]]]]])

    group: 暂时无用,未来功能的预留参数
    target: 执行的目标任务名
    args: 以元组的方式给执行任务传参
    kwargs: 以字典方式给执行任务传参
    name: 线程名,一般不用设置

#启动线程,让线程开始工作
thread_obj.start()

1.4 多线程编程

在这里插入图片描述

1.4.1 案例单线程不能满足情况如下:
import time

def sing():
    while True:
        print("我在唱歌,啦啦啦...")
        time.sleep(1)

def dance():
    while True:
        print("我在跳舞,呱呱呱....")
        time.sleep(1)

if __name__ == '__main__':
    sing()
    dance()

打印:

在这里插入图片描述

1.4.2 多线程
1.4.2.1 多线程创建语句
import  threading

sing_thread = threading.Thread( target=sing )  
dance_thread= threading.Thread( target=dance )  

sing_thread.start()  #启动线程1
dance_thread.start() #启动线程2
1.4.2.2 案例
import time
import  threading

def sing():
    while True:
        print("我在唱歌,啦啦啦...")
        time.sleep(1)

def dance():
    while True:
        print("我在跳舞,呱呱呱....")
        time.sleep(1)

if __name__ == '__main__':
	# 创建线程1,需要指定目标target,注意方法名不带括号
    sing_thread = threading.Thread( target=sing )  
     # 创建线程2,需要指定目标target,注意方法名不带括号
    dance_thread= threading.Thread( target=dance )  

    sing_thread.start()  #启动线程1
    dance_thread.start() #启动线程2
1.4.2 多线程传参使用
1.4.2.1 多线程传参使用 args 和 kwargs
thread_obj=threading.Thread([group [, target [, name [, args [, kwargs]]]]])

args: 以元组的方式给执行任务传参,注意参数是元组,如:args=("元素1",) ;元组点号,结束
kwargs: 以字典方式给执行任务传参,注意参数是字典类型,如: kwargs={"msg":"我在跳舞"} 
1.4.2.2 使用案例
import time
import  threading

def sing(msg):
    while True:
        print(msg)
        time.sleep(1)

def dance(msg):
    while True:
        print(msg)
        time.sleep(1)

if __name__ == '__main__':

    # 创建线程1,传参,注意:(args是元组类型,结尾有,)
    sing_thread = threading.Thread( target=sing, args=("我在唱歌",) )
    # 创建线程2,传参,注意:(kwargs是字典类型)
    dance_thread= threading.Thread( target=dance, kwargs={"msg":"我在跳舞"} )

    sing_thread.start()  #启动线程1 
    dance_thread.start() #启动线程2

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

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

相关文章

电影格式怎么转换mp4?电影格式转换教程

电影格式怎么转换mp4?平时喜欢看电影的小伙伴都知道,平时我们下载到的电影文件格式可谓是五花八门,如Mp4、Flv、AVI、WMV、MKV、MOV等。然而,相较于其他常用格式,MP4是一种使用最为广泛的视频格式,并且文件…

echarts另外存为图片

今天同事画了个Echarts,我看了下居然有下载功能!!!!(之前一直不知道) 这是原图,右上角有个下载功能, 下载后是这样的 貌似是没有了y轴的参数和x轴的参数,估计是可以配置的…

解决报错:Error:digital envelope routines::unsupported

antDesignPro版本:5.2.0 包管理工具:pnpm 本地pnpm dev(用的node版本为18,18.15.0)运行AntDesignPro后台项目时,控制台报错,截图如下。 解决方法:使用的node版本过高导致&#xff0…

ChatGPT批量写作文章软件

什么是ChatGPT批量写作文章。简单来说,它是一种使用ChatGPT技术的方法,可以帮助您批量生成各种类型的文章和内容。无论您是需要新闻报道、博客文章、产品描述、社交媒体帖子还是其他类型的内容,ChatGPT都能满足您的需求。它可以在极短的时间内…

利用亚马逊 云服务器 EC2 和S3免费套餐搭建私人网盘

网盘是一种在线存储服务,提供文件存储,访问,备份,贡献等功能,是我们日常中不可或缺的一种服务。很多互联网公司都为个人和企业提供免费的网盘服务。但这些免费服务都有一些限制,比如限制下载速度&#xff0…

微信成绩查询

在现代教育中,教师经常需要发布学生成绩,并方便学生查询。为了提高效率和便利性,开发一个微信学生成绩查询发布系统是一种不错的选择。本文将介绍如何开发这样一个系统,使教师能够轻松管理学生成绩,并让学生方便地查询…

附录一-pandas操作excel

文章参考 Python之如何使用pandas操作Excel表_1XXXXXXXXXXXXXXXXX1的博客-CSDN博客 我现在有一个 test.xlsx 文件,内容如下 目录 1 获取行列信息 2 获取单元格的值 3 改变单元格的值并保存到原文档 1 获取行列信息 pandas读取行号会不读取第一行 2 获取单…

广义线段树上树剖再拿线段树维护:0914T4

cp 一种常见套路(也是广义线段树问题的核心解决方法,UNR1好像也有一题): 如果在线段树上进行一段区间修改,那么必然是一段右节点一段左节点 这个过程其实就是zkw的本质 下面都要用zkw来理解 考虑原题,有…

VR全景拍摄:打破传统拍摄角度限制,营造全新体验

VR全景拍摄不仅仅是拍摄环境,更多的是展示意境,我们的传统文化就是讲究意境,仅仅是看一张清晰无比的图片,自然显得没有趣味,但是这种真实的视觉体验,明明不在现场却能直观体验现场场景,这种意境…

SHIBUYA109 首次推出的人物化身系列!

准备好迎接由 SHIBUYA109 监督设计的原创人物化身系列,名为“SHIBUYA109 时尚系列 2023”,以各种引领潮流的时尚为特色。这个限量系列融合了日本的潮流和文化,全球仅有 2060 个独一无二的人物化身(其中 2000 个限量发售&#xff0…

【JVM】类加载的过程

文章目录 类的生命周期加载验证准备解析初始化简要概括 类的生命周期 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载 (Loading)、验证(Verification)、准备&#xf…

基于SSM+Vue的网络教学平台的设计与实现的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

抖音开网店无货源怎么找

随着社交媒体的快速发展,抖音已经成为了一种极具潜力的电商平台。许多人想要利用这个平台开设网店,但是其中很多人面临的问题是如何找到货源。无货源的抖音网店经营固然具有一定的难度,但并非不可行。以下是一些帮助你在抖音开网店无货源的方…

idea中maven项目打包成jar,报错没有主清单属性解决方法

使用idea自带的打包可能会出现一下问题 在pom.xml中引入下面的依赖&#xff0c;即可解决 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions&…

Linux 多线程 | 线程安全、死锁、线程同步

在前面的文章中我们讲述了锁的理解、原理、用户级线程库的内容&#xff0c;以及对Linux中的锁和线程进行了封装&#xff0c;本文中将继续对多线程的内容进行讲解。 可重入与线程安全 概念 线程安全&#xff1a;多个线程并发同一段代码时&#xff0c;不会出现不同的结果。常见…

ImGui显示中文

ImGui显示中文 前言 首先要加载中文字体&#xff0c;相信大家在网上能搜到或者某些教程都是这么说明的&#xff0c;或者说在字符串前面加上u8前缀的&#xff0c; 例如&#xff1a;ImGui::Text(u8"中文中文 chinese.");&#xff0c;但是大概率中文还是??&#xff…

Java虚拟机:内存区域分配和对象的创建

Java虚拟机&#xff1a;内存区域分配和对象的创建 虚拟机内存区域分配 首先上一张图&#xff1a; 这里主要是看右边的图&#xff0c;这张图描述了JVM中的内存分配区域&#xff0c;其中蓝色的部分是每个线程独有的&#xff0c;而绿色部分是线程共有的。我们以这张图为准&…

iptables 四表五链图

iptables 通过配置四表五链&#xff0c;来控制内核多数据包的过滤、记录、转发、修改操作 全局结构图 常用的 filter 和 nat 表联合图 各个表拥有的链图

传导和辐射EMI有什么区别?

当我们设计原型或使用开发板时&#xff0c;通常可以忽略电磁干扰。但EMI在现实生活中的电子设备和系统中是一个重要的主题&#xff0c;工程师有责任确保电路能够在预期的EMI水平下正常运行&#xff0c;并且不会产生过多的EMI。 我倾向于将EMI与无线干扰联系起来&#xff0c;考…

Nginx服务优化措施、网页安全与配置防盗链

目录 一.优化Nginx 二.隐藏/查看版本号 隐藏版本号方法一&#xff1a;修改配置文件&#xff0c;关闭版本号 隐藏版本号方法二&#xff1a;修改源码文件中的版本号&#xff0c;重新编译安装 三.修改用户与组 四.设置缓存时间 五.日志切割脚本 六.设置连接超时控制连接访…