python
threading
多线程

一. Threading简介

首先看下面的没有用Threading的程序


  1. ): 

  2. s += i 

  3. time.sleep( 



  4. ): 

  5. s += i 

  6. time.sleep()] 



  7. ): 

  8. print() 

  9. ): 

  10. print( 

  11. threading:  

  12. threading:  

  13. 主线程等待t这个线程 

  14. threading:  

  15. Main:  

  16. threading:  

  17. Main:  

  18. threading:  

  19. Main:  

  20. threading:  

  21. Main:  

  22. threading:  

  23. Main:  

  24. threading:  

  25. Main:  

  26. threading:  

  27. Main:  

  28. Main:  

  29. Main:  

  30. [Finished ) 

  31. print() 

  32. print(  

  33. lock = threading.Lock() ): 

  34. lock.acquire() 

  35. print(share) 

  36. share += self.i 

  37. time.sleep(random.random()) 

  38. print() 

  39. tt = MyThread() 

  40. t.start() 

  41. tt.start() 


  42. >>> 


  43. + =  


  44. + =  


  45. + =  


  46. + =  

  47. [Finished ):  



  48. + =  


  49. + =  


  50. + =  

  51. + =  

  52. [Finished  


  53. share_cond = threading.Condition() 



  54. print(self.name,share) 

  55. share_cond.notify() ) 






  56. Custom  

  57. Produce  

  58. Custom  

  59. Produce  

  60. Custom  

  61. ... 

  62. ... 

  63. ... 

上面的结果会一直重复执行下去

3 ) 信号量threading.Semaphore

属性

  • 实例化时,指定使用量。

  • 其内置计数器,锁定时+1,
    释放时-1,计数器为0则阻塞。

  • acquire(blocking=True,timeout=None)

  • release()释放锁。






  1. sema.release() 

  2. print(self.name,)] 

  3. Sema Had got resource. 

  4. Sema Had got resource. 

  5. Sema Had got resource. 

  6. Sema Had released resource. 

  7. Sema Had got resource. 

  8. Sema Had released resource. 

  9. Sema Had released resource. 

  10. Sema Had got resource. 

  11. Sema Had released resource. 

  12. Sema Had released resource. 

  13. [Finished ) 

  14. print('Main thread set event flag!') 

  15. event.set() 


  16. if __name__ == '__main__': 

  17. thw = MyThreadWait() 

  18. thm = MyThreadMain() 

  19. thw.start() 

  20. thm.start() 


  21. >>> 

  22. Wait Thread Wait... 

  23. Main thread set event flag! 

  24. Wait Thread Start... 

  25. [Finished in 3.6s] 

好了,大概就是这些了,其他的以后再补充,另外感谢麦子学院提供的免费课程~~~真心不是打广告
为了避嫌,顺便感谢一下imooc,极客学院~很多都是从这些造福人类的网站学到的。
另附上麦子学院的视频教程,毕竟要学会感恩嘛
http://www.maiziedu.com/course/644-9663/

marsggbo笔记出品,必属精品

python多线程学习笔记(超详细)的更多相关文章

  1. Java多线程学习(吐血超详细总结)

    Java多线程学习(吐血超详细总结) 林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 写在前面的话:此文只能说是java多线程的一个入门,其实 ...

  2. Python多线程学习笔记

    Python中与多线程相关的模块有 thread, threading 和 Queue等,thread 和threading模块允许程序员创建和管理线程.thread模块提供了基本的线程和锁的支持,而 ...

  3. maven学习笔记(超详细总结)

    目录 项目管理利器--maven 第1章 maven概述 1-1 项目管理利器-maven简介 1.1.1 什么是maven 1.1.2 什么是依赖管理 1.1.3 传统项目的依赖管理 1.1.4 m ...

  4. Python 基础学习笔记(超详细版)

    1.变量 python中变量很简单,不需要指定数据类型,直接使用等号定义就好.python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前 ...

  5. java多线程学习笔记——详细

    一.线程类  1.新建状态(New):新创建了一个线程对象.        2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ...

  6. java进阶-多线程学习笔记

    多线程学习笔记 1.什么是线程 操作系统中 打开一个程序就是一个进程 一个进程可以创建多个线程 现在系统中 系统调度的最小单元是线程 2.多线程有什么用? 发挥多核CPU的优势 如果使用多线程 将计算 ...

  7. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  8. Python Click 学习笔记(转)

    原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发 ...

  9. JAVA多线程学习笔记(1)

    JAVA多线程学习笔记(1) 由于笔者使用markdown格式书写,后续copy到blog可能存在格式不美观的问题,本文的.mk文件已经上传到个人的github,会进行同步更新.github传送门 一 ...

随机推荐

  1. 地图学与GIS制图的基础理论(二)

    利用GIS技术进行地图制图,其最终目标还是需要回到地图学中去.地图学中关于地图制作的经典要求,有以下几点: 地图必须要与现实相符,符合人类的感知 这点是地图最基本的一条,地图的每一个要素展现的都是跟现 ...

  2. cmake的两个命令: option 和 configure_file

    本节要讨论的是cmake的两个命令: option 和 configure_file option 选项,让你可以根据选项值进行条件编译. configure_file 配置文件,让你可以在代码文件中 ...

  3. Kafka 0.10 Producer网络流程简述

    1.Producer 网络请求 1.1 Producer Client角度 KafkaProducer主要靠Sender来发送数据给Broker. Sender: 该线程handles the sen ...

  4. 微信支付 - iOS

    前言 大家都说微信支付很麻烦,我看了一下 就做一下记录吧 正文 一: 1.微信开发网站:https://open.weixin.qq.com 注册一个开发者账号,申请一个app,(大概7个工作日,但是 ...

  5. CoreData和FMDB你用哪个?

    概括: 我们先说说这两个东西,CoreData 和 FMDB,其实就我自己而言觉得这两个都不错,刚开始是接触FMDB的,CoreData是工作后自己看的.苹果推荐开发者去使用CoreData,但 FM ...

  6. (转)java二维数组的深度学习(静态与动态)

    转自:http://developer.51cto.com/art/200906/128274.htm,谢谢 初始化: 1.动态初始化:数组定义与为数组分配空间和赋值的操作分开进行:2.静态初始化:在 ...

  7. 图片转换PDF

    组件在我的文件里,需要的可以找找. public partial class MainForm : Form { private string srcFile, destFile; bool succ ...

  8. Oracle排序分析函数

    在Oracle自拓展SQL功能中,分析函数(Analytical Function)是非常强大的工具. 本篇我们介绍几个Oracle典型的排序分析函数,来帮助我们解决实际问题. 1.从rownum谈起 ...

  9. 架构师之路——里氏替换原则LSP

    定义: 如果对每一个对类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型. 内容: 里氏替换原则通 ...

  10. Html5与CSS3权威指南 百度云下载

    Html5与CSS3权威指南 百度云下载 链接:http://pan.baidu.com/s/1hq6Dlvm 密码:php3