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抽象类的新写法
Jun 18 Python
Python的Django框架中的数据过滤功能
Jul 17 Python
python中pandas.DataFrame排除特定行方法示例
Mar 12 Python
解决nohup重定向python输出到文件不成功的问题
May 11 Python
python之django母板页面的使用
Jul 03 Python
使用python判断你是青少年还是老年人
Nov 29 Python
对python的unittest架构公共参数token提取方法详解
Dec 17 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
Aug 12 Python
通过 Python 和 OpenCV 实现目标数量监控
Jan 05 Python
pycharm 实现本地写代码,服务器运行的操作
Jun 08 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
Python Django框架介绍之模板标签及模板的继承
May 27 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
B2K与车机的中波PK
2021/03/02 无线电
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
php实现singleton()单例模式实例
2014/11/06 PHP
PHP的邮件群发系统phplist配置方法详细总结
2016/03/30 PHP
php操作mongodb封装类与用法实例
2018/09/01 PHP
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
JS正则表达式验证中文字符
2017/05/08 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
2017/05/17 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
微信小程序通过一个json实现分享朋友圈图片
2019/09/03 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
openlayers 3实现车辆轨迹回放
2020/09/24 Javascript
Python使用代理抓取网站图片(多线程)
2014/03/14 Python
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
Python多进程原理与用法分析
2018/08/21 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
两道JAVA笔试题
2016/09/14 面试题
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
实习协议书范本
2014/09/25 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js