python 标准库 -- threading
threading : 提高对网络端口的读写效率.
threading.Thread.start() 执行线程操作
threading.Thread.run() 执行线程操作
threading.Thread.join() 调用该方法的线程将等待, 直到该 Thread 对象完成, 再回复运行. 这与进程间调用 wait() 函数类似.
下面对象用于处理多线程同步, 对象一旦被建立,可以被多个线程共享, 并根据情况阻塞某些进程.
threading.Lock 互斥锁, mutex,
threading.Lock.acquire()
threading.Lock.release()
threading.Condition condition variable, 建立该对象时, 包含一个 Lock 对象, 因为 condition variable 总是和 mutex 一起使用. 可以对 condition 对象调用acquire() 和 release() 方法, 以控制潜在的Lock 对象.
threading.Condition.acquire()
threading.Condition.release()
threading.Condition.wait() 相当于 cond_wait()
threading.Condition.notify_all() 相当于 cond_broadcase()
threading.Condition.notify() 与 notify_all() 功能类似, 但置唤醒一个等待的线程, 而不是全部.
threading.Semaphore 计数锁,(Semaphore)传统上是一种进程间同步工具. 创建对象的时候,可以传递一个整数作为计数上限(sema= threading.Semaphore(5)). 与 Lock 类似, 也有 Lock 的两个方法.
threading.Semaphore.acquire()
threading.Semaphore.release()
threading.Event 与 threading.Condition 类似, 相当于没有潜在 Lock 保护的 condition variable. 对象有 True 和 False 两个状态 . 可以多个线程使用 wait() 等待, 直到某个线程调用该对象的 set() 方法, 将对象设置为 True. 线程可以调用对象的 clear() 方法来重置对象为 False 状态.
threading.Event.wait() 等待
threading.Event.set() 将对象设置为 True 状态.
threading.Event.clear() 将对象重置为 False 状态.
线程 threading.Thread.start() + 过程式编程示例
#!/usr/local/bin/env python
#
import threading
import time
import os
def doChore():
time.sleep(1)
def booth(tid):
global i
global lock
while True:
lock.acquire()
if i != 0:
i = i - 1
print(tid,': now left :',i)
doChore()
else:
print("Thread_id",tid," no more tickets.")
os._exit(0)
lock.release()
doChore()
i = 100
lock = threading.Lock()
for k in range(10):
new_thread = threading.Thread(target=booth,args=(k,))
new_thread.start()
线程 threading.Thread.run() + 面向对象 示例
#!/usr/local/bin/env python
#
import threading
import time
import os
def doChore():
time.sleep(1)
class BoothThread(threading.Thread):
def __init__(self,tid,monitor):
self.tid = tid
self.monitor = monitor
threading.Thread.__init__(self)
def run(self):
while True:
monitor["lock"].acquire()
if monitor['tick'] != 0:
monitor['tick'] = monitor['tick'] - 1
print(self.tid,'now left:',monitor['tick'])
doChore()
else:
print('Thread_id', self.tid,"No more ticket.")
os._exit(0)
monitor['lock'].release()
doChore()
monitor = {'tick':100, 'lock':threading.Lock()}
for k in range(10):
new_thread = BoothThread(k,monitor)
new_thread.start()
python 标准库 -- threading的更多相关文章
- python 标准库 —— 线程与同步(threading、multiprocessing)
1. 创建线程 使用 os 下的 fork() 函数调用(仅限 Unix 系统) import os print('current process (%s) starts ...' % (os.get ...
- python标准库00 学习准备
Python标准库----走马观花 python有一套很有用的标准库.标准库会随着python解释器一起安装在你的电脑上的.它是python的一个组成部分.这些标准库是python为你准备的利器,可以 ...
- Python标准库——走马观花
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python有一套很有用的标准库(standard library).标准库会随着 ...
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
- 转--Python标准库之一句话概括
作者原文链接 想掌握Python标准库,读它的官方文档很重要.本文并非此文档的复制版,而是对每一个库的一句话概括以及它的主要函数,由此用什么库心里就会有数了. 文本处理 string: 提供了字符集: ...
- Python 标准库一览(Python进阶学习)
转自:http://blog.csdn.net/jurbo/article/details/52334345 写这个的起因是,还是因为在做Python challenge的时候,有的时候想解决问题,连 ...
- python 标准库大全
python 标准库 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 string ...
- Python标准库14 数据库 (sqlite3)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言.S ...
- Python标准库:内置函数hasattr(object, name)
Python标准库:内置函数hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False ...
随机推荐
- OC中的单例
概念 单例模式的意图是类的对象称为系统中唯一的实例,提供一个访问点,供客户类共享资源 什么情况下使用单例 )类只能由一个实例,而且必须从一个为人熟知的访问点对其进行访问,比如工厂方法 )这个唯一的实例 ...
- centos下搭建redis集群
必备的工具: redis-3.0.0.tar redis-3.0.0.gem (ruby和redis接口) 分析: 首先,集群数需要基数,这里搭建一个简单的redis集群(6个redis实 ...
- R的变量类型和常用函数
一.R的变量类型 也可以说是数据存储方式,有: Vector: 一维阵列 Matrics: 二维阵列,其中所有元素是同一数据类型. factor: 种类变量,可使用levels函数来规定种类变量的各级 ...
- Oracle 12C 新特性之 恢复表
RMAN的表级和表分区级恢复应用场景:1.You need to recover a very small number of tables to a particular point in time ...
- 使用Git上传项目代码到github
github是一个基于Git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开.这对于一般人来说公共仓库就已经足够了. 注册账户以及创建仓库 要想使用gi ...
- Python列表(一)
列表由一系列特定顺序排列的元素组成,在python中使用[]来表示列表,并用,来进行元素分割. >>> name_list['alben', 'james', 'harden', ' ...
- 全景技术大揭秘,市场核心早洞悉——VR全景加盟
未来已来,未来已见.2017是3D全景创业的天时,全景行业逐步走向成熟.全景智慧城市专注vr全景6年,技术国内遥遥领先.全景智慧城市市场总监常诚,透漏3D全景技术和市场的核心. 拍摄全景必备的设备:单 ...
- Python Tkinter学习(1)——第一个Tkinter程序
注:本文可转载,转载请注明出处:http://www.cnblogs.com/collectionne/p/6885066.html.格式修改未完成. Tkinter资料 Python Wiki, T ...
- PHP基础入门(二)---入门必备哦!
前言 在上一章中,我们初步了解了PHP的网页基础和PHP的入门基础,今天继续给大家分享更多有关PHP的知识. 理论知识看起来可能比较枯燥一些,但是我们的实践(敲代码)毕竟离不开它. 只有理论与实践相结 ...
- 将数据的初始化放到docker中的整个工作过程(问题记录)
将数据的初始化放到docker中的整个工作过程 由于是打算作为个人博客,所以对于install这个步骤,我从一开始就打算删掉的,前面一个多星期一直在修bug,到前天才开始做这个事情. 过程中也是碰到了 ...