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基于多线程实现ping扫描功能示例
Jul 23 Python
在python 不同时区之间的差值与转换方法
Jan 14 Python
详解如何管理多个Python版本和虚拟环境
May 10 Python
numpy.random模块用法总结
May 27 Python
Django项目之Elasticsearch搜索引擎的实例
Aug 21 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
Python猴子补丁知识点总结
Jan 05 Python
Python json模块与jsonpath模块区别详解
Mar 05 Python
Python %r和%s区别代码实例解析
Apr 03 Python
python如何实时获取tcpdump输出
Sep 16 Python
django中ImageField的使用详解
Dec 21 Python
matplotlib部件之套索Lasso的使用
Feb 24 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
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
2014/04/01 PHP
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
论坛特效代码收集(落伍转发-不错)
2006/12/02 Javascript
又一个小巧的图片预加载类
2007/05/05 Javascript
js判断设备是否为PC并调整图片大小
2014/02/12 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
JS前端笔试题分析
2016/12/19 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
2020/03/30 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
国庆宣传标语
2014/06/30 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
企业法人代表证明书
2014/09/27 职场文书
模范教师材料大全
2014/12/16 职场文书
地震慰问信
2015/02/14 职场文书
总经理岗位职责范本
2015/04/01 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书