本文介绍了Python对于线程的支持,包括“学会”多线程编程需要掌握的基础以及Python两个线程标准库的完整介绍及使用示例。

注意:本文基于Python2.4完成,;如果看到不明白的词汇请记得百度谷歌或维基。

1. 线程基础

1.1. 线程状态

线程有5种状态,状态转换的过程如下图所示:

1.2. 线程同步(锁)

多线程的优势在于可以同时运行多个任务(至少感觉起来是这样)。但是当线程需要共享数据时,可能存在数据不同步的问题。考虑这样一种情况:一个列表里所有元素都是0,线程"set"从后向前把所有元素改成1,而线程"print"负责从前往后读取列表并打印。那么,可能线程"set"开始改的时候,线程"print"便来打印列表了,输出就成了一半0一半1,这就是数据的不同步。为了避免这种情况,引入了锁的概念。

锁有两种状态——锁定和未锁定。每当一个线程比如"set"要访问共享数据时,必须先获得锁定;如果已经有别的线程比如"print"获得锁定了,那么就让线程"set"暂停,也就是同步阻塞;等到线程"print"访问完毕,释放锁以后,再让线程"set"继续。经过这样的处理,打印列表时要么全部输出0,要么全部输出1,不会再出现一半0一半1的尴尬场面。

线程与锁的交互如下图所示:

python线程wait_Python线程指南相关推荐

  1. python线程wait_python基础线程-管理并发线程

    线程模块建立在线程的底层特性之上,使线程的工作变得更简单.更像python.使用线程允许程序在同一进程空间中并发运行多个操作. 线程对象 使用线程最简单的方法是用目标函数实例化它,然后调用start( ...

  2. Python进程和线程保姆式教学,1个台机子多只手干活的秘籍

    进程线程有多重要?刚开始学Python的时候你可能还没有感觉到,因为你写的代码从上到下执行一遍就可以了,但实际上这很初级,实际开发写项目的时候,为了充分利用电脑配置来加快程序进度,我们往往会用到多进程 ...

  3. python进程和线程_Python进程与线程知识

    好程序员Python 培训分享进程与线程知识 , Python 开发语言现在已经是被大家非常看中的编程语言了,本篇文章给读者们分享一下 Python 进程与线程知识小结,本篇文章具有一定的参考借鉴价值 ...

  4. Python进程、线程、协程详解

    进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...

  5. python进程、线程的学习心得

    什么是多线程竞争? 线程不是独立的,同一个进程里的线程,线程间的数据是共享的,多线程操作时,容易造成数据的混乱,线程不安全. 如何解决? 互斥锁. 好处:能够保证某段关键代码执行时,只有一个线程操作, ...

  6. python与Java线程实现方式的对比

    1. python多线程的实现方式: 继承Thread类 实现Runnable接口 Callable接口+FutureTask包装器来创建Thread线程 线程操作涉及到的方法: Thread:sta ...

  7. python停止线程池_详解python中Threadpool线程池任务终止示例代码

    需求 加入我们需要处理一串个位数(0~9),奇数时需要循环打印它:偶数则等待对应时长并完成所有任务:0则是错误,但不需要终止任务,可以自定义一些处理. 关键点 定义func函数处理需求 callbac ...

  8. python结束线程池正在运行的线程_python之线程与线程池

    #进程是资源分配的最小单位,线程是CPU调度的最小单位.每一个进程中至少有一个线程.#传统的不确切使用线程的程序称为只含有一个线程或单线程程序,而可以使用线程的程序被称为多线程程序,在程序中使用一个线 ...

  9. 解析Python中的线程与进程

    1 基础知识 现在的 PC 都是多核的,使用多线程能充分利用 CPU 来提供程序的执行效率. 1.1 线程 线程是一个基本的 CPU 执行单元.它必须依托于进程存活.一个线程是一个execution ...

最新文章

  1. 在Ubuntu 16.04.5 LTS上使用python第三方库QRCode 6.0生成二维码实录
  2. c# 文件及目录操作类
  3. [bzoj2893] 集合计数
  4. java,UDP协议简单实现
  5. avl删除根节点图解_图解 6 种树,你心中有数吗。。。
  6. css值变量吗,CSS变量初体验
  7. 双十一京东PLUS会员 VS 阿里88VIP,谁的羊毛多?
  8. C++ unordered_map
  9. python创建一个空的dataframe_python - 创建一个空的Pandas DataFrame,然后填充它?
  10. 华为智慧屏 鸿蒙如何获得,荣耀智慧屏得鸿蒙助力,玩法超多
  11. Telegram 支持删除聊天双方设备中的消息记录
  12. FreeRTOS基础教程第一章创建任务
  13. 你手机里装过最牛的软件是什么,精选15款分享,有一个你没用过
  14. 基于java实现学科竞赛管理系统【Springboot+mybatis+layui】
  15. google退出中国市场是战略性错误
  16. C++多线程匿名聊天室(控制台)
  17. 《30天吃掉那只 TensorFlow2.0》 开篇辞(Tensorflow 学习之路)
  18. 有关PS中图片不能解锁问题
  19. 厉害了,苹果承认故意让旧 iPhone 变慢!
  20. 计算机操做系统(十二):进程同步和互斥

热门文章

  1. python3中flask下载文件:图像.jpg
  2. python 协程库gevent学习--源码学习(一)
  3. Pycharm新手使用教程(详解)
  4. 【KNIME经验】兼容读取多种日期格式数据
  5. Ubuntu上实现多分屏窗口管理
  6. SDNU__1082.观妹种菊
  7. win10系统连打印机服务器中,win10连不上打印机怎么回事_win10系统连接不上打印机如何解决...
  8. C语言:动态内存分配
  9. 利器解读——Linux 内核调测中最最让开发者头疼的 bug 有解了|龙蜥技术
  10. 微信小程序:“去中心化”的社交电商,电商正转向以商品为核心