Python–线程

进程与线程的区别:

  1. 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;

  2. 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;

  3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见;

  4. 调度和切换:线程上下文切换比进程上下文切换要快得多。

多线程:

多线程工作实例1:实现类似并发执行的效果,实际上并非并发,是多个线程间进行上下文的切换

程序中,启动了50个线程,每个线程在执行run方法时,均sleep两秒,在程序结束时,实际上总体时间仅仅用了2秒多。

守护线程:设置子线程为守护线程时,当主线程结束时,子线程即结束,不会等待子线程执行完毕

守护线程实例:

程序中,以守护线程的形式启动20个子线程,在主线程结束时子线程同时结束,即使子线程尚未执行完毕。程序总花费时间为1s多。

线程锁:

由于多线程是同时执行的,多线程在修改同一个数据时,会出现修改后的数据不正确的情况。可以使用线程锁实现线程串行修改数据。

递归锁:

Rlock 递归锁,它相当于一个字典,记录了锁的门与锁的对应值,当开门的时候会根据对应来开锁.

信号量

Original: https://www.cnblogs.com/sunnytomorrow/p/13526177.html
Author: NorthFeng
Title: Python–线程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590703/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • BASE64处理文件

    Base64: Base64是一种编码方式,基于64个ASCII字符来表示二进制数据,Base64将8个bit为一个单位的字节数据拆分为以6个bit为一个单位的二进制片段,每6个b…

    数据库 2023年6月9日
    077
  • 数据库治理的云原生之道 —— Database Mesh 2.0

    2018 年 3 月,一篇《Service Mesh 是大方向,那 Database Mesh 呢?》迅速火爆技术圈。在这篇文章中,Apache ShardingSphere 创始…

    数据库 2023年6月16日
    082
  • AutoMySQLBackup 3.0的一个小Bug

    $ more daily_kkkk_2021-09-22_16h47m_Wednesday.sql — MySQL dump 10.13 Distrib 5.7.34, for …

    数据库 2023年5月24日
    056
  • Qt 保持窗口顶层显示最简单方法

    情景: 当前存在两个窗口或以上,先初始化的窗口会被后初始化的窗口覆盖,从而置于底层, 这时一个最简单的方案就是给需要置于顶层的窗口配置事件过滤器,监听窗口状态,当窗口不属于顶层窗口…

    数据库 2023年6月16日
    0113
  • Java 杂记

    记载 Java 杂项的笔记和零碎的笔记 Java 杂记 一. Java 特性 1.1 封装 属性私有化,提供公共的可以访问的方法 1.2 继承(extends) Java &amp…

    数据库 2023年6月11日
    075
  • 时序数据库InfluxDB的基本语法

    一 了解InfluxDB的必要性 Time series data is a series of data points each associated with a specif…

    数据库 2023年6月16日
    086
  • 爬虫基础

    1.爬虫是什么? 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。 2.爬虫原理 _3.第一个爬虫程序 _ 1.扒取网页 : 扒取网页和基本代码 首先我们调…

    数据库 2023年6月11日
    064
  • How to code like a pro in 2022 and avoid If-Else

    高级开发人员如何编写代码: var input = "Dog"; var map = new Dictionary<string, string> …

    数据库 2023年6月11日
    063
  • 运行的第一个Django

    2022-09-24 创建了一个Django项目后,进行测试,输入指令: python manage.py runserver 出现了如下问题: 我还想着,Django模块通过安装…

    数据库 2023年6月14日
    070
  • MYSQL(基本篇)——一篇文章带你走进MYSQL的奇妙世界

    MYSQL算是我们程序员必不可少的一份求职工具了 无论在什么岗位,我们都可以看到应聘要求上所书写的”精通MYSQL等数据库及优化” 那么我们今天就先来了解一…

    数据库 2023年5月24日
    086
  • 小试牛刀:Go 反射帮我把 Excel 转成 Struct

    背景 起因于最近的一项工作:我们会定义一些关键指标来衡量当前系统的健康状态,然后配置对应的报警规则来进行监控报警。但是当前的报警规则会产生大量的误报,需要进行优化。我所负责的是将一…

    数据库 2023年6月6日
    084
  • RabbitMQ

    安装Rabbitmq 1.由于需要erlang语言的支持,在安装rabbitMq之前需要安装erlang sudo apt-get install erlang-nox 2.安装r…

    数据库 2023年6月9日
    074
  • Docker Bridge 网络原理

    Docker 的网络子系统是可插拔驱动式的,默认情况下存在或支持多种网络接口,如 bridge、host、overlay、macvlan 以及 none 类型的网络接口。 brid…

    数据库 2023年6月6日
    085
  • cv2简单使用(opencv-python)

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月9日
    063
  • Java学习-第一部分-第一阶段-第七节:面向对象编程(中级)

    面向对象编程(中级) 笔记目录:(https://www.cnblogs.com/wenjie2000/p/16378441.html) lntelliJ IDEA ●IDEA介绍…

    数据库 2023年6月11日
    089
  • JDK卸载

    win+r,进入cmd,输入java -version显示命令不存在即删除成功 Original: https://www.cnblogs.com/Icy01/p/16298149…

    数据库 2023年6月11日
    070
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球