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标准库之多进程(multiprocessing包)介绍
Nov 25 Python
Python实现的HTTP并发测试完整示例
Apr 23 Python
Python使用matplotlib绘制动画的方法
May 20 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
Jun 06 Python
python顺序的读取文件夹下名称有序的文件方法
Jul 11 Python
PyCharm代码回滚,恢复历史版本的解决方法
Oct 22 Python
Python3.5 Pandas模块之DataFrame用法实例分析
Apr 23 Python
PyQt5 QTableView设置某一列不可编辑的方法
Jun 25 Python
Python3.5以上版本lxml导入etree报错的解决方案
Jun 26 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
python入门学习关于for else的特殊特性讲解
Nov 20 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
一个odbc连mssql分页的类
2006/10/09 PHP
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
JQuery下拉框应用示例介绍
2014/04/23 Javascript
js控制当再次点击按钮时的间隔时间
2014/06/03 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
js实现小星星游戏
2020/03/23 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
python批量下载图片的三种方法
2013/04/22 Python
python练习程序批量修改文件名
2014/01/16 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
python代码能做成软件吗
2020/07/24 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
video下autoplay属性无效的解决方法(添加muted属性)
2020/05/19 HTML / CSS
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
法学毕业生自荐信
2013/11/13 职场文书
小区停车场管理制度
2014/01/27 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书