python中threading超线程用法实例分析


Posted in Python onMay 16, 2015

本文实例讲述了python中threading超线程用法。分享给大家供大家参考。具体分析如下:

threading基于Java的线程模型设计。锁(Lock)和条件变量(Condition)在Java中是对象的基本行为(每一个对象都自带了锁和条件变量),而在Python中则是独立的对象。Python Thread提供了Java Thread的行为的子集;没有优先级、线程组,线程也不能被停止、暂停、恢复、中断。Java Thread中的部分被Python实现了的静态方法在threading中以模块方法的形式提供。

threading 模块提供的常用方法:

threading.currentThread(): 返回当前的线程变量。
threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。

threading模块提供的类:

Thread, Lock, Rlock, Condition, [Bounded]Semaphore, Event, Timer, local.

Thread是线程类,与Java类似,有两种使用方法,直接传入要运行的方法或从Thread继承并覆盖run():

# encoding: UTF-8
import threading
# 方法1:将要执行的方法作为参数传给Thread的构造方法
def func():
  print 'func() passed to Thread'
t = threading.Thread(target=func)
t.start()
# 方法2:从Thread继承,并重写run()
class MyThread(threading.Thread):
  def run(self):
    print 'MyThread extended from Thread'
t = MyThread()
t.start()

构造方法:

Thread(group=None, target=None, name=None, args=(), kwargs={})
group: 线程组,目前还没有实现,库引用中提示必须是None;
target: 要执行的方法;
name: 线程名;
args/kwargs: 要传入方法的参数。

实例方法:

isAlive(): 返回线程是否在运行。正在运行指启动后、终止前。
get/setName(name): 获取/设置线程名。
is/setDaemon(bool): 获取/设置是否守护线程。初始值从创建该线程的线程继承。当没有非守护线程仍在运行时,程序将终止。
start(): 启动线程。
join([timeout]): 阻塞当前上下文环境的线程,直到调用此方法的线程终止或到达指定的timeout(可选参数)。

一个使用join()的例子:

# encoding: UTF-8
import threading
import time
def context(tJoin):
  print 'in threadContext.'
  tJoin.start()
  # 将阻塞tContext直到threadJoin终止。
  tJoin.join()
  # tJoin终止后继续执行。
  print 'out threadContext.'
def join():
  print 'in threadJoin.'
  time.sleep(1)
  print 'out threadJoin.'
tJoin = threading.Thread(target=join)
tContext = threading.Thread(target=context, args=(tJoin,))
tContext.start()

运行结果:

in threadContext.
in threadJoin.
out threadJoin.
out threadContext.

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 Python
python实现TF-IDF算法解析
Jan 02 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
利用python循环创建多个文件的方法
Oct 25 Python
在Pandas中给多层索引降级的方法
Nov 16 Python
django 通过URL访问上传的文件方法
Jul 28 Python
Django使用unittest模块进行单元测试过程解析
Aug 02 Python
Python实现对adb命令封装
Mar 06 Python
Anaconda使用IDLE的实现示例
Sep 23 Python
Python基于mediainfo批量重命名图片文件
Dec 29 Python
python numpy中multiply与*及matul 的区别说明
May 26 Python
一行Python命令实现批量加水印
Apr 07 Python
python实现合并两个数组的方法
May 16 #Python
python简单实现基数排序算法
May 16 #Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 #Python
python中循环语句while用法实例
May 16 #Python
pymongo实现多结果进行多列排序的方法
May 16 #Python
python使用线程封装的一个简单定时器类实例
May 16 #Python
python通过函数属性实现全局变量的方法
May 16 #Python
You might like
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
PHP持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
php简单统计中文个数的方法
2016/09/30 PHP
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
Javascript面向对象编程(三) 非构造函数的继承
2011/08/28 Javascript
js实现表格字段排序
2014/02/19 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
JavaScript进阶(四)原型与原型链用法实例分析
2020/05/09 Javascript
浅析Python函数式编程
2018/10/06 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
python字典与json转换的方法总结
2020/12/28 Python
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
小学语文教学经验交流材料
2014/06/02 职场文书
政府采购方案
2014/06/12 职场文书
小学生环保标语
2014/06/13 职场文书
抗震救灾标语
2014/06/26 职场文书
动物科学专业求职信
2014/07/27 职场文书
教师批评与自我批评
2014/10/15 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书
vue项目多环境配置(.env)的实现
2021/07/21 Vue.js