python线程锁(thread)学习示例


Posted in Python onDecember 04, 2013
# encoding: UTF-8
import thread
import time# 一个用于在线程中执行的函数
def func():
    for i in range(5):
        print 'func'
        time.sleep(1)
    # 结束当前线程
    # 这个方法与thread.exit_thread()等价
    thread.exit() # 当func返回时,线程同样会结束
# 启动一个线程,线程立即开始运行
# 这个方法与thread.start_new_thread()等价
# 第一个参数是方法,第二个参数是方法的参数
thread.start_new(func, ()) # 方法没有参数时需要传入空tuple
# 创建一个锁(LockType,不能直接实例化)
# 这个方法与thread.allocate_lock()等价
lock = thread.allocate()
# 判断锁是锁定状态还是释放状态
print lock.locked()
# 锁通常用于控制对共享资源的访问
count = 0
# 获得锁,成功获得锁定后返回True
# 可选的timeout参数不填时将一直阻塞直到获得锁定
# 否则超时后将返回False
if lock.acquire():
    count += 1
    # 释放锁
    lock.release()
# thread模块提供的线程都将在主线程结束后同时结束
time.sleep(6)

thread 模块提供的其他方法:
thread.interrupt_main(): 在其他线程中终止主线程。
thread.get_ident(): 获得一个代表当前线程的魔法数字,常用于从一个字典中获得线程相关的数据。这个数字本身没有任何含义,并且当线程结束后会被新线程复用。

thread还提供了一个ThreadLocal类用于管理线程相关的数据,名为 thread._local,threading中引用了这个类。

Python 相关文章推荐
python实现的二叉树算法和kmp算法实例
Apr 25 Python
python获取指定目录下所有文件名列表的方法
May 20 Python
Python实现大文件排序的方法
Jul 10 Python
详解Python使用tensorflow入门指南
Feb 09 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
Django中自定义模型管理器(Manager)及方法
Sep 23 Python
python对文件的操作方法汇总
Feb 28 Python
tensorflow安装成功import tensorflow 出现问题
Apr 16 Python
python爬虫实现POST request payload形式的请求
Apr 30 Python
django在开发中取消外键约束的实现
May 20 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
python中K-means算法基础知识点
Jan 25 Python
pyv8学习python和javascript变量进行交互
Dec 04 #Python
python使用PyV8执行javascript代码示例分享
Dec 04 #Python
python解析xml文件实例分享
Dec 04 #Python
python抓取某汽车网数据解析html存入excel示例
Dec 04 #Python
python共享引用(多个变量引用)示例代码
Dec 04 #Python
python函数返回多个值的示例方法
Dec 04 #Python
python sys模块sys.path使用方法示例
Dec 04 #Python
You might like
php使用百度翻译api示例分享
2014/01/31 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
JavaScript中的Primitive对象封装介绍
2014/12/31 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
Python常用模块介绍
2014/11/21 Python
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
python和shell获取文本内容的方法
2018/06/05 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
2019/08/13 Python
关于Pytorch的MNIST数据集的预处理详解
2020/01/10 Python
Python Django view 两种return的实现方式
2020/03/16 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
管理站站长岗位职责
2013/11/27 职场文书
聘任证明怎么写
2015/03/02 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书
深入理解go slice结构
2021/09/15 Golang
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js