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传送门 一 ...
随机推荐
- Linux文件权限及用户管理
/etc/passwd文件与 /etc/shadow文件/etc/passwd文件/etc/passwd文件主要存放登录名.UID等用户相关信息,用户登录密码存放在/etc/shadow文件中.例子: ...
- java学习阶段三:运算符和结构学习
import java.util.Scanner;/* * JAVA中运算符的学习: * 算术运算符:+.-.*./ 和 %,两个整数相除,结果还是整数. * 赋值运算符:=.+=.-=.*=./=. ...
- 如何在 Windows上编译Objective-C
Objective-C现在几乎已经变成了苹果的专利了,可以直接在苹果的Xcode上编译Objective-C程序,但是在Windows平台下的编译工具就寥寥无几了,本身这种语言用的人就不是很多.今天在 ...
- BZOJ 2142: 礼物
模非素数下的排列组合,简直凶残 调着调着就过了= = 都不知道怎么过的= = 直接上链接http://hi.baidu.com/aekdycoin/blog/item/147620832b567eb4 ...
- LNMP系统服务搭建过程详解
和LAMP不同的是LNMP中的N指的是Nginx(类似于Apache的一种web服务软件)其他都一样.目前这种环境应用的也是非常之多.Nginx设计的初衷是提供一种快速高效多并发的web服务软件.在静 ...
- Java显式锁学习总结之二:使用AbstractQueuedSynchronizer构建同步组件
Jdk1.5中包含了并发大神Doug Lea写的并发工具包java.util.concurrent,这个工具包中包含了显示锁和其他的实用同步组件.Doug Lea在构建锁和组件的时候,大多是以队列同步 ...
- 【排序算法】快速排序算法 Java实现
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). 基本思想 先从数组中找出一个数作为基 ...
- Debian部署RMI异常:java.rmi.ConnectException: Connection refused to host: 127.0.1.1;
现象:在windows上部署RMI很顺利,但移到debian上部署后,客户端报异常: java.rmi.ConnectException: Connection refused to host: 12 ...
- C++ 11 学习3:显示虚函数重载(override)
5.显示虚函数重载 在 C++ 里,在子类中容易意外的重载虚函数.举例来说: struct Base { virtual void some_func(); }; struct Derived : B ...
- sql查询表说明
一条神奇的sql语句 可以查询到数据库表的说明信息.如下:希望可以帮到大家 SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说 ...