Python3 多线程编程 threading模块

性能自动化测试除了用jmeter还可以用python threading模块做

一.threading模块定义

Python 2.4中包含的较新的线程模块为线程提供了更强大的高级支持。

线程模块公开线程模块的所有方法,并提供一些额外的方法

activecount()——返回活动的线程对象的数量。

currentthread()——返回调用方线程控件中线程对象的数量。

enumerate()——返回当前活动的所有线程对象的列表。

除了方法之外,线程模块还有实现线程的Thread类实现了hreading。Thread类提供的方法如下-

run() - run()方法是线程的入口点。

start()——start()方法通过调用run方法启动线程。

join([time])——join()等待线程终止。

isAlive()方法检查线程是否仍在执行。

getName()——getName()方法返回线程的名称。

setName()——setName()方法设置线程的名称。

二.使用threading模块实现一个新线程

定义Thread类的一个新子类。

覆盖_init__(self [,args])方法来添加额外的参数。

然后,覆盖run(self [,args])方法来实现线程启动时应该执行的操作。

一旦创建了新的Thread子类,就可以创建它的一个实例,然后通过调用start()启动一个新线程,start()又调用run()方法。

三.实例

import threading
import time

exitFlag = 0

class myThread (threading.Thread):
   def __init__(self, threadID, name, counter):
      threading.Thread.__init__(self)
      self.threadID = threadID
      self.name = name
      self.counter = counter
   def run(self):
      print ("Starting " + self.name)
      print_time(self.name, self.counter, 5)
      print ("Exiting " + self.name)

def print_time(threadName, delay, counter):
   while counter:
      if exitFlag:
         threadName.exit()
      time.sleep(delay)
      print ("%s: %s" % (threadName, time.ctime(time.time())))
      counter -= 1

# Create new threads
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)

# Start new Threads
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print ("Exiting Main Thread")

执行结果
Starting Thread-1
Starting Thread-2
Thread-1: Fri Feb 19 10:00:21 2016
Thread-2: Fri Feb 19 10:00:22 2016
Thread-1: Fri Feb 19 10:00:22 2016
Thread-1: Fri Feb 19 10:00:23 2016
Thread-2: Fri Feb 19 10:00:24 2016
Thread-1: Fri Feb 19 10:00:24 2016
Thread-1: Fri Feb 19 10:00:25 2016
Exiting Thread-1
Thread-2: Fri Feb 19 10:00:26 2016
Thread-2: Fri Feb 19 10:00:28 2016
Thread-2: Fri Feb 19 10:00:30 2016
Exiting Thread-2
Exiting Main Thread

原文地址:https://www.cnblogs.com/cai-auto/p/10955232.html

时间: 2024-10-11 22:56:30

Python3 多线程编程 threading模块的相关文章

python多线程编程----threading模块

1.threading 模块中的内容 - Thread: 一个可执行线程对象 - Lock: 原始的Lock对象 与thread模块中一样 - RLock: 允许单个线程多次请求的Lock - Condition: 线程等待直到条件满足 - Event : 事件发生时,唤醒所有等待进程 - Semaphore:信号量,标识有限资源的个数 - Timer: 定时启动线程 - Barrier: 等待指定的所有的进程都来到 2.daemon threads 守护进程 如果你的主线程准备退出,并且你并不

Python之多线程:Threading模块

1.Threading模块提供的类 Thread,Lock,Rlock,Condition,Semaphore,Event,Timer,local 2.threading模块提供的常用的方法 (1)threading.currentThread(): 返回当前的线程变量. (2)threading.enumerate(): 返回一个包含正在运行的线程的list.正在运行指线程启动后.结束前,不包括启动前和终止后的线程. (3)threading.activeCount():返回正在运行的线程数量

python多线程与threading模块

python多线程与_thread模块 中介绍了线程的基本概念以及_thread模块的简单示例.然而,_thread模块过于简单,使得我们无法用它来准确地控制线程,本文介绍threading模块,它提供了更强大的多线程管理方案. threading模块的对象 Thread 表示一个执行线程的对象 Lock 锁原语 RLock 可重入锁对象,使单一线程可以再次获得已持有的锁(递归锁) Condition 条件变量对象,使得一个线程等待另一个线程满足特定条件 Event 条件变量的通用版本,任意数量

[代码仓库]Python3多线程编程

首先导入模块 import threading from queue import Queue threading是线程模块,queue是系统提供的线程间通信队列,其中Queue为先进先出队列 thread1 = threading.Thread(target = target_function ,daemon = True)#target中是目标函数名,daemon为设置守护线程,true为守护线程,false为非守护.当父线程退出时,需要等待非守护线程结束,守护线程则跟随父线程退出 thre

Python3 多线程编程(thread、threading模块)

threading是对thread的封装. 1.开启线程: t=threading.Thread(target=sayhi,args=('hh',)) t.start() 或者先建一个Thread的继承类,然后用这个类中的start()方法打开: 2.主进程下开启子进程: t=multiprocessing.Process(target=work) t.start() 程序会先执行主程序的语句,再执行此子进程的目标函数work(): 3.t.setDadmon() 设置守护进程:必须在start

python多线程编程-queue模块和生产者-消费者问题

摘录python核心编程 本例中演示生产者-消费者模型:商品或服务的生产者生产商品,然后将其放到类似队列的数据结构中.生产商品中的时间是不确定的,同样消费者消费商品的时间也是不确定的. 使用queue模块(python2.x版本中,叫Queue)来提供线程间通信的机制,从而让线程之间可以分享数据.具体而言,就是创建一个队列,让生产者(线程)在其中放入新的商品,而消费者(线程)消费这些商品. 下表是queue模块的部分属性: 属性 描述 queue模块的类 Queue(maxsize=0) 创建一

Python3 多线程 学习 threading

#-*- coding:utf-8 --*- #多线程测试 import time import datetime import threading def worker(): print("未用多线程") time.sleep(1) return def worker2(): print("使用多线程") time.sleep(1) return if __name__ == "__main__" : d1 = datetime.datetim

【10.2】多线程编程-threading

1.通过Thread类实例化 1 #!/user/bin/env python 2 # -*- coding:utf-8 -*- 3 4 # 对于io操作来说,多线程和多进程性能差别不大 5 # 1.通过Thread类实例化 6 import time 7 import threading 8 9 10 def get_detail_html(url): 11 print('get detail html started') 12 time.sleep(2) 13 print('get deta

python多线程之 threading模块详解

1.threading.Thread对象[创建线程的主要对象]: 方法:start():启动线程   run():启动线程后自动调用的方法 join([timeout]):等待到被调用的线程终止   is_alive():返回线程活动状态 属性:name:线程名   ident:线程ID号   daemon:后台标志 2.创建线程的方法: 1:实例化threading.Thread对象 ths = threading.Thread( target = None, name = None, arg