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基于twisted实现简单的web服务器
Sep 29 Python
详解python的webrtc库实现语音端点检测
May 31 Python
详谈Python基础之内置函数和递归
Jun 21 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
使用 Python 实现文件递归遍历的三种方式
Jul 18 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
Pytorch十九种损失函数的使用详解
Apr 29 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
Aug 07 Python
Python 随机按键模拟2小时
Dec 30 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
Jan 13 Python
Python循环之while无限迭代
Apr 30 Python
python数字图像处理之对比度与亮度调整示例
Jun 28 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
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
层序遍历在ExtJs的TreePanel中的应用
2009/10/16 Javascript
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
javascript中创建对象的三种常用方法
2010/12/30 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
js将控件隐藏的方法及display属性介绍
2013/07/04 Javascript
js获取客户端外网ip的简单实例
2013/11/21 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
巧用局部变量提升javascript性能
2014/02/24 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
vue项目中微信登录的实现操作
2020/09/08 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
Python中基础的socket编程实战攻略
2016/06/01 Python
Python编程argparse入门浅析
2018/02/07 Python
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
python简易远程控制单线程版
2018/06/20 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
python实现双人五子棋(终端版)
2020/12/30 Python
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
2014庆六一活动方案
2014/03/02 职场文书
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
英文求职信范文
2014/05/23 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
银行授权委托书格式
2014/10/10 职场文书
办公室管理规章制度
2015/08/04 职场文书
素质教育学习心得体会
2016/01/19 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
python四种出行路线规划的实现
2021/06/23 Python
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS