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

Python8:线程和进程

1.并发和并行

并发:在逻辑上具备同时处理多个任务的能力(其实每时刻只有一个任务)
并行:物理上在同一时刻执行多个并发任务
在这里插入图片描述

2.线程与进程

一个进程管多个线程,一个进程至少有一个线程
在这里插入图片描述
python多线程是假的,因为python解释器内置同一时间CPU只运行一个线程

import threading
import time
def foo(something):for i in range(10):print(something)time.sleep(1)
#创建线程
t1=threading.Thread(target=foo,args=("看电影",))
t2=threading.Thread(target=foo,args=("听音乐",))
#启动线程
t1.start()
t2.start()

在这里插入图片描述

3.join函数-阻塞主线程

一个主线程,2个子线程t1和t2
需要t1和t2运行结束之前,数据检查不会运行,也就是把主线程阻塞

import threading
import time
def foo(something):for i in range(10):print(something)time.sleep(1)
#创建线程
t1=threading.Thread(target=foo,args=("数据逻辑1",))
t2=threading.Thread(target=foo,args=("数据逻辑2",))
#启动线程
t1.start()
t2.start()
#join在子线程完成运行之前,这个子线程的父线程将一直被阻塞
t1.join()
t2.join()
print("启动数据检查....")

在这里插入图片描述

4.守护线程

消费需求满足后,数据逻辑1和2不需要再运行了,直接退出主线程
如果没有声明守护线程,主线程就要等子线程全部执行完才退出

import threading
import time
def foo(something):for i in range(10):print(something)time.sleep(1)
#创建线程
t1=threading.Thread(target=foo,args=("数据逻辑1",))
t2=threading.Thread(target=foo,args=("数据逻辑2",))
#声明守护线程,必须再start方法之前,声明守护线程
t1.setDaemon(True)
t2.setDaemon(True)
#启动线程
t1.start()
t2.start()
for i in range(10):print("消费数据....")time.sleep(1)
print("消费需求已经满足了")

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 手机容器化 安装docker
  • 华为模拟器ensp中USG6000V防火墙web界面使用
  • Xilinx FPGA:vivado串口输入输出控制fifo中的数据
  • 构建LangChain应用程序的示例代码:62、如何使用Oracle AI向量搜索和Langchain构建端到端的RAG(检索增强生成)pipeline
  • 【Python基础】代码如何打包成exe可执行文件
  • 力扣题解( 最长湍流子数组)
  • R语言学习笔记5-数据结构-多维数组
  • 如何通过JSON-RPC向以太坊链发送签名交易数据?
  • Open3D 点云配准精度评价指标-RMSE
  • 华为机考真题 -- 螺旋数字矩阵
  • “金山-讯飞”杯2024年武汉理工大学程序设计竞赛 A. Mobiusp败走***(思维题-点双连通分量、连通性)
  • 51单片机:电脑通过串口控制LED亮灭(附溢出率和波特率详解)
  • SVN 解决冲突
  • 《算法笔记》总结No.6——贪心
  • Elasticsearch:Node.js ECS 日志记录 - Morgan
  • 【EOS】Cleos基础
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • bearychat的java client
  •  D - 粉碎叛乱F - 其他起义
  • Java多态
  • Laravel5.4 Queues队列学习
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • PHP的Ev教程三(Periodic watcher)
  • Rancher-k8s加速安装文档
  • ReactNativeweexDeviceOne对比
  • Spring框架之我见(三)——IOC、AOP
  • Webpack 4x 之路 ( 四 )
  • 阿里云Kubernetes容器服务上体验Knative
  • 闭包--闭包之tab栏切换(四)
  • 彻底搞懂浏览器Event-loop
  • 创建一种深思熟虑的文化
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 聊聊flink的BlobWriter
  • 每天10道Java面试题,跟我走,offer有!
  • 山寨一个 Promise
  • 微信小程序设置上一页数据
  • 想写好前端,先练好内功
  • 新手搭建网站的主要流程
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 再次简单明了总结flex布局,一看就懂...
  • scrapy中间件源码分析及常用中间件大全
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #pragma multi_compile #pragma shader_feature
  • #QT(串口助手-界面)
  • $.proxy和$.extend
  • $jQuery 重写Alert样式方法
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (3)nginx 配置(nginx.conf)
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (Python第六天)文件处理
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (四)进入MySQL 【事务】
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失