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 相关文章推荐
通过mod_python配置运行在Apache上的Django框架
Jul 22 Python
学习python之编写简单乘法口诀表实现代码
Feb 27 Python
用python实现简单EXCEL数据统计的实例
Jan 24 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
使用pyinstaller逆向.pyc文件
Dec 20 Python
Python类和实例的属性机制原理详解
Mar 21 Python
使用openCV去除文字中乱入的线条实例
Jun 02 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
sklearn中的交叉验证的实现(Cross-Validation)
Feb 22 Python
Python常用配置文件ini、json、yaml读写总结
Jul 09 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
PHP网站提速三大“软”招
2006/10/09 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
2018/09/14 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
[01:02:26]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第二场 1月18日
2021/03/11 DOTA
Python读写unicode文件的方法
2015/07/10 Python
Python实现的堆排序算法示例
2018/04/29 Python
【python】matplotlib动态显示详解
2019/04/11 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
python设置环境变量的作用整理
2020/02/17 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
社会实践感言
2014/01/25 职场文书
运动会入场解说词300字
2014/01/25 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
高中学校对照检查材料
2014/08/31 职场文书
我的未来不是梦演讲稿
2014/09/02 职场文书
综合测评个人总结
2015/03/03 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
城南旧事读书笔记
2015/06/29 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技
速龙x4-860k处理器相当于i几
2022/04/20 数码科技
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python