python多线程学习笔记(超详细)
一. Threading简介
首先看下面的没有用Threading的程序
- ):
- s += i
- time.sleep(
- ):
- s += i
- time.sleep()]
- ):
- print()
- ):
- print(
- threading:
- threading:
- 主线程等待t这个线程
- threading:
- Main:
- threading:
- Main:
- threading:
- Main:
- threading:
- Main:
- threading:
- Main:
- threading:
- Main:
- threading:
- Main:
- Main:
- Main:
- [Finished )
- print()
- print(
- lock = threading.Lock() ):
- lock.acquire()
- print(share)
- share += self.i
- time.sleep(random.random())
- print()
- tt = MyThread()
- t.start()
- tt.start()
- >>>
- + =
- + =
- + =
- + =
- [Finished ):
- + =
- + =
- + =
- + =
- [Finished
- share_cond = threading.Condition()
- print(self.name,share)
- share_cond.notify() )
- )
- Custom
- Produce
- Custom
- Produce
- Custom
- ...
- ...
- ...
上面的结果会一直重复执行下去
3 ) 信号量threading.Semaphore
属性
实例化时,指定使用量。
其内置计数器,锁定时+1,
释放时-1,计数器为0则阻塞。acquire(blocking=True,timeout=None)
release()释放锁。
- )
- )
- sema.release()
- print(self.name,)]
- Sema Had got resource.
- Sema Had got resource.
- Sema Had got resource.
- Sema Had released resource.
- Sema Had got resource.
- Sema Had released resource.
- Sema Had released resource.
- Sema Had got resource.
- Sema Had released resource.
- Sema Had released resource.
- [Finished )
- print('Main thread set event flag!')
- event.set()
- if __name__ == '__main__':
- thw = MyThreadWait()
- thm = MyThreadMain()
- thw.start()
- thm.start()
- >>>
- Wait Thread Wait...
- Main thread set event flag!
- Wait Thread Start...
- [Finished in 3.6s]
好了,大概就是这些了,其他的以后再补充,另外感谢麦子学院提供的免费课程~~~真心不是打广告
为了避嫌,顺便感谢一下imooc,极客学院~很多都是从这些造福人类的网站学到的。
另附上麦子学院的视频教程,毕竟要学会感恩嘛
http://www.maiziedu.com/course/644-9663/
marsggbo笔记出品,必属精品
python多线程学习笔记(超详细)的更多相关文章
- Java多线程学习(吐血超详细总结)
Java多线程学习(吐血超详细总结) 林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 写在前面的话:此文只能说是java多线程的一个入门,其实 ...
- Python多线程学习笔记
Python中与多线程相关的模块有 thread, threading 和 Queue等,thread 和threading模块允许程序员创建和管理线程.thread模块提供了基本的线程和锁的支持,而 ...
- maven学习笔记(超详细总结)
目录 项目管理利器--maven 第1章 maven概述 1-1 项目管理利器-maven简介 1.1.1 什么是maven 1.1.2 什么是依赖管理 1.1.3 传统项目的依赖管理 1.1.4 m ...
- Python 基础学习笔记(超详细版)
1.变量 python中变量很简单,不需要指定数据类型,直接使用等号定义就好.python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前 ...
- java多线程学习笔记——详细
一.线程类 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ...
- java进阶-多线程学习笔记
多线程学习笔记 1.什么是线程 操作系统中 打开一个程序就是一个进程 一个进程可以创建多个线程 现在系统中 系统调度的最小单元是线程 2.多线程有什么用? 发挥多核CPU的优势 如果使用多线程 将计算 ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- Python Click 学习笔记(转)
原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发 ...
- JAVA多线程学习笔记(1)
JAVA多线程学习笔记(1) 由于笔者使用markdown格式书写,后续copy到blog可能存在格式不美观的问题,本文的.mk文件已经上传到个人的github,会进行同步更新.github传送门 一 ...
随机推荐
- 地图学与GIS制图的基础理论(二)
利用GIS技术进行地图制图,其最终目标还是需要回到地图学中去.地图学中关于地图制作的经典要求,有以下几点: 地图必须要与现实相符,符合人类的感知 这点是地图最基本的一条,地图的每一个要素展现的都是跟现 ...
- cmake的两个命令: option 和 configure_file
本节要讨论的是cmake的两个命令: option 和 configure_file option 选项,让你可以根据选项值进行条件编译. configure_file 配置文件,让你可以在代码文件中 ...
- Kafka 0.10 Producer网络流程简述
1.Producer 网络请求 1.1 Producer Client角度 KafkaProducer主要靠Sender来发送数据给Broker. Sender: 该线程handles the sen ...
- 微信支付 - iOS
前言 大家都说微信支付很麻烦,我看了一下 就做一下记录吧 正文 一: 1.微信开发网站:https://open.weixin.qq.com 注册一个开发者账号,申请一个app,(大概7个工作日,但是 ...
- CoreData和FMDB你用哪个?
概括: 我们先说说这两个东西,CoreData 和 FMDB,其实就我自己而言觉得这两个都不错,刚开始是接触FMDB的,CoreData是工作后自己看的.苹果推荐开发者去使用CoreData,但 FM ...
- (转)java二维数组的深度学习(静态与动态)
转自:http://developer.51cto.com/art/200906/128274.htm,谢谢 初始化: 1.动态初始化:数组定义与为数组分配空间和赋值的操作分开进行:2.静态初始化:在 ...
- 图片转换PDF
组件在我的文件里,需要的可以找找. public partial class MainForm : Form { private string srcFile, destFile; bool succ ...
- Oracle排序分析函数
在Oracle自拓展SQL功能中,分析函数(Analytical Function)是非常强大的工具. 本篇我们介绍几个Oracle典型的排序分析函数,来帮助我们解决实际问题. 1.从rownum谈起 ...
- 架构师之路——里氏替换原则LSP
定义: 如果对每一个对类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型. 内容: 里氏替换原则通 ...
- Html5与CSS3权威指南 百度云下载
Html5与CSS3权威指南 百度云下载 链接:http://pan.baidu.com/s/1hq6Dlvm 密码:php3