python中threading超线程用法实例分析

 更新时间:2015年05月16日 16:11:46   作者:igoo  
这篇文章主要介绍了python中threading超线程用法,实例分析了Python中threading模块的相关使用技巧,需要的朋友可以参考下

本文实例讲述了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操作xml文件详细介绍

    python操作xml文件详细介绍

    这篇文章主要介绍了python操作xml文件详细介绍,着重介绍了获取XML标签的属性和值的方法,需要的朋友可以参考下
    2014-06-06
  • Python pandas删除指定行/列数据的方法实例

    Python pandas删除指定行/列数据的方法实例

    这篇文章主要给大家介绍了关于Python pandas删除指定行/列数据的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • pytorch矩阵乘法的实现

    pytorch矩阵乘法的实现

    本文主要介绍了pytorch矩阵乘法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • NVIDIA安装CUDA的实现(图文教程)

    NVIDIA安装CUDA的实现(图文教程)

    本文主要介绍了NVIDIA安装CUDA的实现,包括系统要求、软件下载、安装步骤以及常见问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • python OpenCV GrabCut使用实例解析

    python OpenCV GrabCut使用实例解析

    这篇文章主要介绍了python OpenCV GrabCut使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 详解Python中的多线程编程

    详解Python中的多线程编程

    这篇文章主要介绍了详解Python中的多线程编程,Python中的多线程一直是Python学习中的重点和难点,要反复巩固!需要的朋友可以参考下
    2015-04-04
  • Python 自动备份脚本的示例代码

    Python 自动备份脚本的示例代码

    这篇文章主要介绍了Python 自动备份脚本,本文结合代码给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • 深入浅析python定时杀进程

    深入浅析python定时杀进程

    这篇文章主要介绍了深入浅析python定时杀进程的相关资料,需要的朋友可以参考下
    2016-06-06
  • Empty test suite.(PyCharm程序运行错误的解决方法)

    Empty test suite.(PyCharm程序运行错误的解决方法)

    今天小编就为大家分享一篇Empty test suite.(PyCharm程序运行错误的解决方法),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python软件包安装的三种常见方法

    Python软件包安装的三种常见方法

    python拥有非常丰富的扩展包,下面这篇文章主要给大家介绍了关于Python软件包安装的三种常见方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07

最新评论