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

作者:igoo 时间:2023-12-14 13:05:45 

本文实例讲述了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,threading
0
投稿

猜你喜欢

  • 用XsltArgumentList实现xsl的参数调用

    2008-09-04 11:24:00
  • Pandas.DataFrame重置列的行名实现(set_index)

    2021-08-07 16:56:25
  • pandas DataFrame实现几列数据合并成为新的一列方法

    2021-05-22 01:36:00
  • 利用SQL语言有没有办法查到表中哪些记录中的全部

    2009-04-10 18:29:00
  • Java API学习教程之正则表达式详解

    2023-10-23 05:28:21
  • 利用 python 对目录下的文件进行过滤删除

    2022-07-01 01:24:32
  • Python设计模式结构型代理模式

    2023-06-30 19:23:58
  • PHP实现打包下载文件的方法示例

    2024-05-11 09:45:54
  • Vue实现自定义字段导出EXCEL的示例代码

    2024-04-27 16:12:09
  • JDBC连接Sql Server 2005总结

    2024-01-21 20:46:45
  • MySQL实现批量更新不同表中的数据

    2024-01-24 09:47:28
  • python Copula 实现绘制散点模型

    2023-07-24 14:02:37
  • Python处理文本文件中控制字符的方法

    2022-02-24 09:16:05
  • Python编程快速上手——Excel表格创建乘法表案例分析

    2021-06-10 20:45:37
  • python 文件读写和数据清洗

    2021-02-10 22:58:43
  • SQL SERVER 与ACCESS、EXCEL的数据转换

    2024-01-18 04:24:40
  • pyecharts绘制时间轮播图柱形图+饼图+玫瑰图+折线图

    2022-01-18 13:19:47
  • python help函数实例用法

    2022-05-03 23:29:32
  • SQL SERVER 2012新增函数之逻辑函数IIF

    2024-01-16 05:39:46
  • sql2000各个版本区别总结第1/3页

    2024-01-15 10:09:42
  • asp之家 网络编程 m.aspxhome.com