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使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
在Python中使用模块的教程
Apr 27 Python
Python实现包含min函数的栈
Apr 29 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
Oct 11 Python
python实现TF-IDF算法解析
Jan 02 Python
Python利用正则表达式实现计算器算法思路解析
Apr 25 Python
Python中的异常处理try/except/finally/raise用法分析
Feb 28 Python
PyQt5 QListWidget选择多项并返回的实例
Jun 17 Python
Python QQBot库的QQ聊天机器人
Jun 19 Python
python 实现单通道转3通道
Dec 03 Python
简单了解Django ORM常用字段类型及参数配置
Jan 07 Python
Python偏函数Partial function使用方法实例详解
Jun 17 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)
2010/09/04 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
javascript入门之string对象【新手必看】
2016/11/22 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
python实现向ppt文件里插入新幻灯片页面的方法
2015/04/28 Python
Python正则简单实例分析
2017/03/21 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
CSS3自定义滚动条样式的示例代码
2017/08/21 HTML / CSS
如何用canvas实现在线签名的示例代码
2018/07/10 HTML / CSS
法国时尚童装网站:Melijoe
2016/08/10 全球购物
联想英国官网:Lenovo英国
2019/07/17 全球购物
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
请解释virtual关键字的含义
2015/06/17 面试题
软件测试题目
2013/02/27 面试题
新闻学专业应届生求职信
2013/11/08 职场文书
测控技术与仪器个人求职信范文
2013/12/30 职场文书
回门宴新郎答谢词
2014/01/12 职场文书
科研先进个人典型材料
2014/01/31 职场文书
学生会竞聘书范文
2014/03/31 职场文书
在职证明书范本(2014新版)
2014/09/25 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
技能培训通讯稿
2015/07/18 职场文书
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技
spring boot实现文件上传
2022/08/14 Java/Android