首页 > 编程 > Python > 正文

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

2020-01-04 19:15:26
字体:
来源:转载
供稿:网友

这篇文章主要介绍了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():

 

 
  1. # encoding: UTF-8 
  2. import threading 
  3. # 方法1:将要执行的方法作为参数传给Thread的构造方法 
  4. def func(): 
  5. print 'func() passed to Thread' 
  6. t = threading.Thread(target=func) 
  7. t.start() 
  8. # 方法2:从Thread继承,并重写run() 
  9. class MyThread(threading.Thread): 
  10. def run(self): 
  11. print 'MyThread extended from Thread' 
  12. t = MyThread() 
  13. 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()的例子:

 

 
  1. # encoding: UTF-8 
  2. import threading 
  3. import time 
  4. def context(tJoin): 
  5. print 'in threadContext.' 
  6. tJoin.start() 
  7. # 将阻塞tContext直到threadJoin终止。 
  8. tJoin.join() 
  9. # tJoin终止后继续执行。 
  10. print 'out threadContext.' 
  11. def join(): 
  12. print 'in threadJoin.' 
  13. time.sleep(1
  14. print 'out threadJoin.' 
  15. tJoin = threading.Thread(target=join) 
  16. tContext = threading.Thread(target=context, args=(tJoin,)) 
  17. tContext.start() 

运行结果:

in threadContext.

in threadJoin.

out threadJoin.

out threadContext.

希望本文所述对大家的Python程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表