进程、线程及python的多线程编程

news2024/11/26 11:43:24

目录

一.进程、线程和并行执行

1.什么是进程、线程

注意

 2.什么是并行执行

二.python的多线程编程

threading模块

语法

 多线程编程的传参

演示

三.总结


 

一.进程、线程和并行执行

1.什么是进程、线程

现代操作系统比如Mac OS X,UNIX, Linux, Windows等,都是支持“多任务”的操作系统。
进程:就是一个程序,运行在系统之上,那么便称之这个程序为一个运行进程,并分配进程ID方便系统管理。线程:线程是归属于进程的,一个进程可以开启多个线程,执行不同的工作,是进程的实际工作最小单位。

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

注意

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

 2.什么是并行执行

并行执行的意思指的是同一时间做不同的工作。
进程之间就是并行执行的,操作系统可以同时运行好多程序,这些程序都是在并行执行。

除了进程外,线程其实也是可以并行执行的。
也就是比如一个Python程序,其实是完全可以做到:

  • 一个线程在输出:你好
  • 一个线程在输出:Hello

像这样一个程序在同一时间做两件乃至多件不同的事情,我们就称之为:多线程并行执行

二.python的多线程编程

threading模块

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

语法

演示

import time

def dence():
    while True:
        print("我在跳舞!")
        time.sleep(1)

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

dence()
sing()

如上图,当直接调用时,sing函数一直没有执行,因为此时程序是单线程

import time
import threading
def dence():
    while True:
        print("我在跳舞!")
        time.sleep(1) 

def sing():
    while True:
        print("我在唱歌,啦啦啦")
        time.sleep(1)
#创建跳舞和唱歌两个线程
dance_thread=threading.Thread(target=dence)
sing_thread=threading.Thread(target=sing)
#让线程干活
dance_thread.start()
sing_thread.start()

 结果是

 多线程编程的传参

需要传参的话可以通过:

  1. args参数通过元组(按参数顺序)的方式传参,元组内只有一个时,最后要有逗号
  2. 或使用kwargs参数用字典的形式传参

演示

import time
import threading
def dence(msg):
    while True:
        print(msg)
        time.sleep(1)

def sing(a):
    while True:
        print(a)
        time.sleep(1)
#创建跳舞和唱歌两个线程
dance_thread=threading.Thread(target=dence,args=("我要跳舞!",))
sing_thread=threading.Thread(target=sing,kwargs={"a":"我要唱歌"})
#让线程干活
dance_thread.start()
sing_thread.start()

结果是

三.总结

1.什么是进程
程序在操作系统内运行,即成为一个运行进程
2.什么是线程
进程内部可以有多个线程,程序的运行本质上就是由进程内部的线程在实际工作的。
3.什么是并行执行

  • 多个进程同时在运行,即不同的程序同时运行,称之为:多任务并行执行
  • 一个进程内的多个线程同时在运行,称之为:多线程并行执行

4.threading模块的使用
thread_obj = threading.Thread(target=func)创建线程对象
thread_obj.start()启动线程执行
5.如何传参

 注意传参需要:

  1. args参数通过元组(按参数顺序)的方式传参,元组内只有一个时,最后要有逗号
  2. 或使用kwargs参数用字典的形式传参

 

 

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

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

相关文章

CSC|2023年艺术类人才培养特别项目解读及建议

目前国家留学基金委(CSC)官网已经发布了2023年艺术类人才培养特别项目通知,知识人网小编现将其选派工作流程、选派办法、申请材料及说明(访问学者、博士后)原文转载并加以解读、提出建议。知识人网解读及建议一、2023年…

新产品Digi XBee RR无线模块迁移指南

(咨询申请 - 上海皕科电子有限公司--专注物联网 登记后,可提供相关资料,购买XBee模块,有机会获得USB评估底板及相关中文资料,或者免费申请借用评估套件) 目录 一、简介 1、MicroPython 2、蓝牙 3、文件…

SpringBoot+easypol前后端分离实现excel导出(保姆级教程)

本篇博文目录1.后端2.前端(采用axios)3.运行效果1.后端 导入easypoi的依赖 <!--用来处理POL相关的操作:easypol--><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.2.0</version&…

Cadence OrCAD: 层次化设计中的电源和地符号

Cadence OrCAD: 层次化设计中的电源和地符号 层次化设计操作步骤&#xff1a;Cadence OrCAD: 层次化设计 Hierarchical Design 本文介绍一个小问题&#xff1a;分层设计中的电源和地符号的作用范围。 电源符号默认作用范围 OrCAD中电源和地符号默认是全局的&#xff0c;也就…

2023年1月中国数据库排行榜:OceanBase 持续两月登顶,前四甲青云直上开新局

一元复始&#xff0c;万象更新。 国产数据库在经历过耕获菑畲的一年后&#xff0c;产品、生态、人才队伍建设等都取得了重大的进展。2023年1月 墨天轮中国数据库流行度排行 火热出炉&#xff0c;本月排行榜“属性”列新增“多模型”&#xff0c;榜单前十名变动较小&#xff0c;…

基于springboot,vue影院订票系统

开发工具&#xff1a;IDEA服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8项目构建&#xff1a;maven数据库&#xff1a;mysql5.7系统用户前台和管理后台两部分&#xff0c;项目采用前后端分离前端技术&#xff1a;vue elementUI服务端技术&#xff1a;springbootmybatis项目功…

JAVA开发(Netty框架与NIO)

所谓IO即input和output的缩写&#xff0c;是对数据的流入和流出的一种抽象。其中NIONIO主要有三大核心部分&#xff1a;Channel&#xff08;通道&#xff09;&#xff0c;Buffer&#xff08;缓冲区&#xff09;,Selector&#xff08;选择器&#xff09;。Channel(通道)&#xf…

Day54 跨域CORS资源JSONP回调域名接管劫持

前言&#xff1a; #知识点&#xff1a; 1、子域名接管-检测&探针&利用 2、COSP跨域资源-检测&探针&利用 3、JSONP跨域回调-检测&探针&利用 #前置知识点&#xff1a; -同源策略(SOP)-“同源”包括三个条件&#xff1a;同协议 同域名 同端口 同源策…

C/C++之(五)洛谷刷题基础题 --- 新年好

学习之路&#xff0c;长路漫漫&#xff0c;写学习笔记的过程就是把知识讲给自己听的过程。 唯有热爱&#xff0c;可抵岁月漫长&#xff0c;唯有热爱&#xff0c;不畏世间无常&#xff01; 新的一年祝你大展宏“兔” 新的一年&#xff0c;大家记得不要忘记刷题(⊙o⊙)&#xff…

NTN(四) RRC related

微信同步更新欢迎关注同名modem协议笔记。 这篇主要是与RRC层相关的内容&#xff0c;按照cell selection/re-selection->idle->connected 的顺序&#xff0c;对涉及NTN的内容进行总结。首先看下NTN RF相关的内容&#xff0c;这部分对应38.101-5这本spec。 NTN freq inf…

操作系统面试题(史上最全、持续更新)

尼恩面试宝典专题40&#xff1a;操作系统面试题&#xff08;史上最全、持续更新&#xff09; 本文版本说明&#xff1a;V28 《尼恩面试宝典》升级规划为&#xff1a; 后续基本上&#xff0c;每一个月&#xff0c;都会发布一次&#xff0c;最新版本&#xff0c;可以联系构师尼…

一个高效的通用光学卫星数据正射校正程序

李国春 随着高分辨率对地观测卫星发射的日益增多&#xff0c;对数据处理软件的要求也越来越高。通常每个系列卫星都有自己的数据特点并需要专门的处理软件&#xff0c;但卫星数量的增加为每种卫星单独设计软件的压力越来越大。本文介绍的一种处理方案旨在能够正射校正处理大多…

矩阵形状的读取和改变ndarray.shape()方法

【小白从小学Python、C、Java】【计算机等级考试500强双证书】【Python-数据分析】矩阵形状的读取和改变ndarray.shape()方法[太阳]选择题以下说法正确的是&#xff1a;import numpy as np a np.array([[1,2,3],[4,5,6]])print("【显示】a\n",a)print("【显示】…

【第十六篇】Camunda系列-动态表单

动态表单 接下来我们看看动态表单的应用,在Camunda中表单分为内置表单和动态表单。 1.内置表单 内置表单就是在绘制流程图的时候同时绘制表单。这种方式其实就是绑定了对应的流程变量,不是太灵活。但还是来讲解下。 1.1 启动流程绑定 我们先来看下在启动流程的时候就设置相…

点击化学Alkynyl Myristic COOH,82909-47-5,13-十四炔酸

基础产品数据&#xff08;Basic Product Data&#xff09;&#xff1a;CAS号&#xff1a;82909-47-5中文名&#xff1a;炔基-肉豆蔻酸&#xff0c;13-十四炔酸英文名&#xff1a;Alkynyl Myristic Acid&#xff0c;Alkynyl Myristic COOH试剂基团反应特点&#xff08;Reagent g…

c++模板,选择排序,字符数组,字符串

目录 1.模板 1.1模板概念 1.2.函数模板 1.2.1函数模板语法&#xff0c;函数模板的调用--1.自动类型推导&#xff0c;2.显示指定类型 1.2.2函数模板注意事项 ​编辑 1.2.3函数模板的案例&#xff0c;选择排序&#xff0c;字符数组&#xff0c;字符串 1.2.4普通函数与函数…

C语言中的回调函数 和 函数指针

以冒泡排序为例&#xff1a; void sort(int *a, int size) {int i, j;for (i 0; i < size-1; i){for (j 0; j < size - i - 1; j){if (a[j] > a[j1]){int num a[j];a[j] a[j1];a[j1] num;}}}}int main(){int arr[9] {1,2,3,4,5,6,7,8,9};sort(arr, 9); // sort…

列表元素的最大值,最小值,出现的次数和列表长度

1 获取列表中的最大元素和最小元素&#xff1a; 使用max和min可以分别获取一个列表中最大元素和最小元素的值&#xff0c;其语法格式为&#xff1a; max(list) 和min(list) 例&#xff1a;ls[12,34,56,87]#创建列表并赋给ls print(ls中最大元素值为&#xff1a;max(ls))#输出…

JDY-10M BLE组网模块介绍

JDY-10M BLE组网模块简介JDY-10透传模块是基于蓝牙4.0协议标准&#xff0c;工作频段为2.4GHZ范围&#xff0c;调制方式为GFSK&#xff0c;最大发射功率为8db&#xff0c;最大发射距离50米&#xff0c;具有功耗低、尺寸小、信号强、数据传输稳定等特性。JDY-10M BLE组网模块特征…

DM8:达梦数据库DEM部署说明(详细步骤)

DM8:达梦数据库DEM部署说明&#xff08;详细步骤&#xff09;1 创建一个数据库作为DEM后台数据库, 数据库dm.ini参数配置进行优化, 推荐配置:1.1 在该数据库中执行DEM的SQL脚本2 配置tomcat2.1 配置/tomcat/conf/server.xml2.2 修改jvm启动参数3 配置JAVA 1.8及以上版本的运行时…