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使用PyV8执行javascript代码示例分享
Dec 04 Python
Python def函数的定义、使用及参数传递实现代码
Aug 10 Python
python使用marshal模块序列化实例
Sep 25 Python
python学习 流程控制语句详解
Jun 01 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
python基础练习之几个简单的游戏
Nov 10 Python
详解js文件通过python访问数据库方法
Mar 03 Python
Python实现一个数组除以一个数的例子
Jul 20 Python
Python在cmd上打印彩色文字实现过程详解
Aug 07 Python
python opencv图片编码为h264文件的实例
Dec 12 Python
Pytorch 实现变量类型转换
May 17 Python
Python使用DFA算法过滤内容敏感词
Apr 22 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 和 MySQL 时区的一点总结
2008/03/26 PHP
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
js下写一个事件队列操作函数
2010/07/19 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
jquery插件orbit.js实现图片折叠轮换特效
2015/04/14 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
Bootstrap3多级下拉菜单
2017/02/24 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
python爬虫之百度API调用方法
2017/06/11 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
keras输出预测值和真实值方式
2020/06/27 Python
基于OpenCV的路面质量检测的实现
2020/11/04 Python
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
申报职称专业技术个人的自我评价
2013/12/12 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
超市创业计划书
2014/09/15 职场文书
学生个人总结范文
2015/02/15 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
2015年大学生村官工作总结
2015/04/21 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
Python内置的数据类型及使用方法
2022/04/13 Python