多线程 -进程与线程概念,以及多线程代码示例

C中进程与线程的基本使用(结合代码讲解) 具体介绍了linux环境下的进程与线程的实际使用,并结合 C 编写的代码进行讲解。文章中具体的说明了进程与线程的代码编程方法,进程与线程使用上的区别,线程中子线程释放的不同方式与区别,互斥锁的具体使用流程等等。 阅读详情

**

进程和线程的概念**

面试的时候,经常被问到 进程和线程的区别。

简单的说:进程就是运行着的程序。

我们写的python程序(或者其他应用程序比如画笔、qq等),运行起来,就称之为一个进程

在windows下面打开任务管理器,里面显示了当前系统上运行着的进程。

我们系统中有很多的进程运行着,比如qq、搜狗输入法等。
这些程序还没有运行的时候,它们的程序代码文件存储在磁盘中,就是那些扩展名为 .exe 文件。
双击它们,这些 .exe 文件就被os加载到内存中,运行起来,成为进程

而系统中每个进程里面至少包含一个 线程 。
线程是操作系统创建的,每个线程对应一个代码执行的数据结构,保存了代码执行过程中的重要的状态信息。
没有线程,操作系统没法管理和维护代码运行的状态信息。
所以没有创建线程之前,操作系统是不会执行我们的代码的。
我们前面写的Python程序,里面虽然没有创建线程的代码,但实际上,当Python解释器程序运行起来(成为一个进程),OS就自动的创建一个线程,通常称为主线程,在这个主线程里面执行代码指令。
当解释器执行我们python程序代码的时候。 我们的代码就在这个主线程中解释执行。

示例代码:



from threading import Thread, Lock
from time import sleep

bank = {
    'byhy': 0
}

bankLock = Lock()


# 定义一个函数,作为新线程执行的入口函数
def deposit(theadidx, amount):
    # 操作共享数据前,申请获取锁
    bankLock.acquire()

    balance = bank['byhy']
    # 执行一些任务,耗费了0.1秒
    sleep(0.1)
    bank['byhy'] = balance + amount
    print(f'子线程 {theadidx} 结束')

    # 操作完共享数据后,申请释放锁
    bankLock.release()


theadlist = []
for idx in range(10):
    thread = Thread(target=deposit,
                    args=(idx, 1)
                    )
    thread.start()
    # 把线程对象都存储到 threadlist中
    theadlist.append(thread)

for thread in theadlist:
    thread.join()

print('主线程结束')
print(f'最后我们的账号余额为 {bank["byhy"]}')
# 执行一下,结果如下
#
# 子线程
# 0
# 结束
# 子线程
# 1
# 结束
# 子线程
# 2
# 结束
# 子线程
# 3
# 结束
# 子线程
# 4
# 结束
# 子线程
# 5
# 结束
# 子线程
# 6
# 结束
# 子线程
# 7
# 结束
# 子线程
# 8
# 结束
# 子线程
# 9
# 结束
# 主线程结束
# 最后我们的账号余额为
# 10
线程进程以及多线程多进程(超详解) 多线程和多进程是实现并发执行的两种常见方式,它们在操作系统和编程领域中被广泛使用。 阅读详情

相关推荐

用WorkBuddy搭建漫剧AI自动化制作流水线全攻略

在内容创作领域,AI智能体正逐渐从单一工具辅助走向全流程自动化调度。其核心原理是将剧本、分镜、绘图、配音、剪辑等环节拆解为可独立执行的任务单元,由总控系统统一协调,从而大幅降低人力与时间成本。这种模式尤其适用于动态漫画(漫剧)这类环节多、专业度要求高的视频形态。传统制作流程中,角色一致性、配音周期和剪辑返工是公认的效率瓶颈,而借助AI智能体工作台,创作者只需输入故事创意,即可驱动多个数字分身协同完成内容生产。本文以WorkBuddy为例,详细展示如何配置模型、安装技能包并串联五段式流水线,将单集制作成本从万

weixin_28224217的博客 251

进程与线程(代码对比)

下面是抽象类比: 单CPU:一台单核处理器计算机 = 一个车间;多CPU:一台多核处理器计算机 = 一座工厂; 进程:一个车间 = 一个进程; (即一个运行的程序)多进程:一座工厂可以同时运行多个车间;CPU和进程:单CPU只能同时运行单个进程,多CPU可以同时运行多个进程。 线程:车间内一个工人 = 一个线程;进程与线程:一个进程可以包括多个线程。 线程间内存共享:车间的空间是工人们共享...

CPFelix的博客 738

如何设计一个处理物联网设备数据流的后端系统。

设计一个处理物联网设备数据流的后端系统,需要综合考虑设备数据采集、传输、处理、存储等多个方面,保证系统能够处理海量数据,具备高可用性、扩展性和安全性。合理选择适当的技术架构和工具(如MQTT、Kafka、InfluxDB等),并确保系统能够灵活应对不断变化的业务需求和设备接入。

weixin_53227829的博客 838

多线程(线程概念、代码示例)

进程和线程 说起进程,就必须提一下程序,程序是指令和数据的有序集合,是一个静态的概念 进程是执行程序的一次执行过程,第一个动态的概念,是系统资源分配的单位 在一个进程中包含若干个线程,线程是独立的执行路径,一个进程中至少含有一个线程,像我们已知的主线程和JC线程(垃圾回收),即使我们没有自己创建线程,后台也会自动存在上面提到的两个和其他一些线程; 我们运行程序其实是运行的主线程,因为主方法是程序...

但行好事 无问西东 5565

【好玩的游戏项目】使用Docker快速部署属于你的RPG网页小游戏

【好玩的游戏项目】使用Docker快速部署属于你的RPG网页小游戏

jks212454的博客 5573

阿波罗开发板硬件架构与STM32模块化设计详解

嵌入式开发板的模块化设计是提升硬件复用性、降低迭代成本的关键技术路径。其核心在于底板与核心板的电气解耦与功能分层,依托STM32系列MCU(如F429/F767)的丰富外设资源与引脚复用能力,实现信号完整性、电源域隔离与热管理的系统级协同。该架构显著支撑工业HMI、智能家居网关、便携医疗设备等典型场景,尤其在RGB LCD驱动、QSPI Flash内存映射、多协议通信(CAN/RS485/USB)及低功耗唤醒(WK_UP按键)等工程实践中展现出高可靠性与易调试性。本文围绕阿波罗开发板展开深度解析,覆盖最小系

weixin_42510201的博客 64

进程 线程-含代码

import multiprocessing import os import time #子进程执行的实体 def run(num): print('子进程开始执行') print('id{},父进程id:{}'.format(os.getpid(),os.getppid())) print(num) print('子进程结束') if __name__ == ...

我是张先生 545

使用 Visual Studio Code 连接 ABAP On-Premise 系统做开发的详细配置步骤

本文详细介绍了如何在Visual Studio Code中通过ABAP Development Tools扩展连接ABAP On-Premise系统。关键步骤包括:通过Ctrl+Shift+P打开命令行面板选择「ABAP: New Destination...」创建RFC连接(仅支持SSO单点登录),选择本地SAPGUI中已有的系统,输入Client ID、语言和用户名(无需密码),最后将目标系统添加到工作区即可开始开发。文章强调了企业安全考虑下仅支持SSO的设计理念,并展示了连接配置的JSON格式示例。整

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 985

线程和进程

1.1.什么是线程和进程? 进程: 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程 线程: 线程与进程相似,但线程是一个比进程更小的执行单位。一个进程...

代码学习之路的博客 1394

c++ webrtc基础(1) :webrtc源码下载与编译、项目模块介绍、学习资料推荐

本篇博客介绍webrtc源码的下载与编译,以及推荐webrtc学习资料。 源码下载 电脑环境:win10/win11 64bit,合理的上网环境,没有合理的网络环境无法拉取、下载webrtc代码和工具,宽带速度要快,尽量50M. 主要步骤如下: (1) 安装git (2) 打开cmd控制台,下载google开发工具depot_tools: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git (3) 新建一个目

琅嬛福地 3294

2023年美高赛HiMCM:A题蒲公英 思路

蒲公英,通常称为蒲公英,是一种原产于欧亚大陆的植物,现在在世界各地都可以找到[1]。这种植物很容易通过其亮黄色的花朵(图1)和独特的“马勃”种子头(图2)来识别。该头部的每颗种子都附着在一个类似降落伞的结构上,称为“冠毛”,有利于风的传播[2]。如果处于“马勃”阶段的单个蒲公英毗邻一块开阔的一公顷土地,请创建一个数学模型来预测蒲公英在 1、2、3、6 和 12个月内的传播情况。确保您的模型考虑了各种气候条件(例如温带、干旱和热带气候)对蒲公英生长的影响。2. 蒲 公英、人类和其他植物之间的关系很复杂。

斌擎科技 7402

Python中的多线程与多进程:概念、代码示例与应用场景

多线程和多进程是Python中实现并发编程的两种重要方式。多线程适用于I/O密集型任务,而多进程适用于CPU密集型任务。在使用多线程和多进程时,需要注意线程安全、进程间通信开销、资源竞争等问题。通过合理使用多线程和多进程,可以提高程序的效率和性能。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 935

数学建模学习(121):Python实现模糊AHP(Fuzzy AHP)——从原理到实践

Python实现模糊AHP(Fuzzy AHP)

全栈川川 1539

Java中的多线程和多进程

Java中的多进程Thread创建进程线程状态进程的分类线程同步死锁 标准:高可用、高性能、高并发 区别 进程 线程 根本区别 作为资源分配的单位 调度和执行的单位 开销 每个进程都有独立的代码和数据空间(进程上下文),进程间的切换开销大 同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器PC,线程的切换开销小 所处环境 OS中能同时运行多个任务/程序 同一...

木瓜有益健康的博客 3401

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Linux(多进程与多线程)

多线程 多进程

qq_57594025的博客 2049

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python爬虫:单线程、多线程、多进程

在使用爬虫爬取数据的时候,当需要爬取的数据量比较大,且急需很快获取到数据的时候,可以考虑将单线程的爬虫写成多线程的爬虫。下面来学习一些它的基础知识和代码编写方法。

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 5541

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

php多线程多进程

孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。 僵尸进程危害:如果进程不调用wait...

lingying5的博客 859

Python的多线程、多进程以及守护线程、守护进程详解

目录 一:基础知识 二:线程和守护线程,锁 2.1 线程创建 2.2 守护线程 2.3守护线程和非守护线程并存的情况 2.4锁的基本用法 三:多进程和守护进程 3.1 多进程创建 3.2守护进程创建 四:选择多线程还是多进程 近期在工作中,遇到了Python的多线程和守护线程的问题,中间还被一篇文章误导了,所以感觉有必要根据查到的资料和自己的实践梳理一下关于python的多进程和多线程问题。 一:基础知识 线程:线程是CPU一个基本的执行单元。它必须依托于进程...

ftzchina的博客 4442

python多进程多线程介绍,优缺点对比,以及使用场景实例代码

多线程是指在一个进程内同时执行多个线程的并发执行方式。线程是进程的一部分,共享进程的内存空间和资源。多线程执行可以方便地进行数据共享和通信,但由于Python中的全局解释器锁(GIL)的存在,限制了多线程的并行执行。Python中可以使用threading模块来实现多线程。

2725

进程和线程概念

进程是一个独立运行的应用程序实例,它包含了应用程序代码和所有需要的资源,如内存、文件描述符、环境变量等。每个进程在操作系统中是相对独立的个体,并拥有自己的地址空间(内存),不会与其他进程共享。线程是进程中的一个执行单元,也称为轻量级进程。一个进程可以包含一个或多个线程,这些线程可以共享进程的地址空间和资源(如内存、文件描述符),但它们具有自己的栈、寄存器等信息。进程适用于需要隔离资源的场景,具有较高的安全性和稳定性。线程适合在同一个程序内并发处理多个任务,有助于提升程序的性能和资源利用率。

猪猪侠 1176

Java 多线程及进程和线程的区别

是正在运行的,进程是资源分配的最小单位。:是cpu调度的最小单位(线程依赖于进程)。引用了【Java】室友打一把王者就学会了多线程_执久呀的博客-优快云博客")博主的生动比喻,好比你打一把王者**(其实我不玩哈doge)**,比作是你开的那一把游戏,比作成每个玩家所选的英雄或者是游戏中的水晶野怪等之类的。带着这个比喻来理解进程和线程的一些关系。。是不是感觉非常好理解。❤1.线程在进程下进行❤2.进程之间不会相互影响,一个线程结束将会导致整个进程结束❤3.不同的进程数据很难共享。

2401_87022338的博客 798

python指南之多线程与多进程编程大全

Python作为一种高级编程语言,提供了多种并发编程的方式,其中多线程与多进程是最常见的两种方式之一。在本文中,我们将探讨Python中多线程与多进程的概念、区别以及如何使用线程池与进程池来提高并发执行效率。 多线程与多进程的概念 多线程 多线程是指在同一进程内,多个线程并发执行。每个线程都拥有自己的执行栈和局部变量,但共享进程的全局变量、静态变量等资源。多线程适合用于I/O密集型任务,如网络请求、文件操作等,因为线程在等待I/O操作完成时可以释放GIL(全局解释器锁),允许其他线程执行。 多进程

xiaocai 1337

Qt进程与线程的概念、Qt多线程编程、多线程间的同步

Qt进程与线程的概念、Qt多线程编程、多线程间的同步

m0_73443478的博客 661

Python 多线程 vs 多进程:到底该用哪个?

线程是进程中的最小执行单元,同一进程内的多个线程共享进程的内存空间。多线程编程的特点是轻量级,线程间切换开销较小,适合 I/O 密集型任务。

m0_69441654的博客 1384

Python笔记之多线程与多进程

本章节详细讲解Python中的多线程与多进程,包括线程基础(threading模块)、进程基础(模块)、GIL(全局解释器锁)与线程池等概念。多线程与多进程是实现并发和并行的常用方式,对于提升程序的执行效率与响应能力有着重要的作用。

K 1027

一篇文章让你搞懂多线程与多进程!

多线程是指在单个进程的地址空间内创建的多个独立执行流(即 “线程”)。所有线程共享所属进程的核心资源,包括内存空间(代码段、数据段、堆)、文件描述符、信号处理机制等。多进程是指操作系统中同时运行的多个相互独立的进程实例。每个进程拥有完全隔离的地址空间和资源(内存、文件句柄等),进程间默认无法直接访问对方的资源。为更清晰地对比二者差异,以下从 5 个关键维度展开:二者的选择需结合任务特性,核心判断依据如下:python运行 2. 多进程示例(含进程间通信) python运行 关键注意事项与避坑指南

2503_92513364的博客 1258
上一篇: 1静态方法、类方法、属性方法的区别,通过代码来体现 2如何通过反射往一个类里添加一个方法? 3请通过代码实现反射判断当前模块里是否有一个Dog类 4写一个小脚本,不断接收用户指令,根据指令动态导入指定
下一篇: 网络编程 ---C/S架构,TCP/IP协议简单介绍
Python_bh
博客等级 码龄7年 11粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值