【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 detail html end‘)
14
15
16 def get_detail_url(url):
17     print(‘get detail url started‘)
18     time.sleep(2)
19     print(‘get detail url end‘)
20
21
22 if __name__ == ‘__main__‘:
23     thread1 = threading.Thread(target=get_detail_html, args=(‘‘,))
24     thread2 = threading.Thread(target=get_detail_url, args=(‘‘,))
25
26     # 将thread1和thread2设置为守护线程,即主线程退出,子线程关闭
27     thread1.setDaemon(True)
28     thread2.setDaemon(True)
29
30     start_time = time.time()
31     # 启动线程
32     thread1.start()
33     thread2.start()
34
35     # 阻塞,等待thread1和thread2两个子线程执行完成
36     thread1.join()
37     thread2.join()
38
39     print(‘last time: {}‘.format(time.time() - start_time))
get detail html started
get detail url started
get detail url end
get detail html end
last time: 2.0038082599639893

2.通过继承Thread来实现多线程

 1 #!/user/bin/env python
 2 # -*- coding:utf-8 -*-
 3
 4 # 对于io操作来说,多线程和多进程性能差别不大
 5 # 2.通过集成Thread来实现多线程
 6 import time
 7 import threading
 8
 9
10 class GetDetailHtml(threading.Thread):
11     def __init__(self, name):
12         super().__init__(name=name)
13
14     def run(self):
15         print(‘get detail html started‘)
16         time.sleep(2)
17         print(‘get detail html end‘)
18
19
20 class GetDetailUrl(threading.Thread):
21     def __init__(self, name):
22         super().__init__(name=name)
23
24     def run(self):
25         print(‘get detail url started‘)
26         time.sleep(2)
27         print(‘get detail url end‘)
28
29
30 if __name__ == ‘__main__‘:
31     thread1 = GetDetailHtml(‘get_detail_html‘)
32     thread2 = GetDetailUrl(‘get_detail_url‘)
33
34     start_time = time.time()
35
36     thread1.start()
37     thread2.start()
38
39     thread1.join()
40     thread2.join()
41     print(‘last time: {}‘.format(time.time() - start_time))
get detail html started
get detail url started
get detail html end
get detail url end
last time: 2.0030484199523926

原文地址:https://www.cnblogs.com/zydeboke/p/11294647.html

时间: 2024-08-30 13:44:02

【10.2】多线程编程-threading的相关文章

Python3 多线程编程 threading模块

性能自动化测试除了用jmeter还可以用python threading模块做 一.threading模块定义 Python 2.4中包含的较新的线程模块为线程提供了更强大的高级支持. 线程模块公开线程模块的所有方法,并提供一些额外的方法 activecount()——返回活动的线程对象的数量. currentthread()——返回调用方线程控件中线程对象的数量. enumerate()——返回当前活动的所有线程对象的列表. 除了方法之外,线程模块还有实现线程的Thread类实现了hreadi

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

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

day-3 聊聊python多线程编程那些事

python一开始给我的印象是容易入门,适合应用开发,编程简洁,第三方库多等等诸多优点,并吸引我去深入学习.直到学习完多线程编程,在自己环境上验证完这句话:python解释器引入GIL锁以后,多CPU场景下,也不再是并行方式运行,甚至比串行性能更差.不免有些落差,一开始就注定了这门语言迟早是有天花板的,对于一些并行要求高的系统,python可能不再成为首选,甚至是完全不考虑.但是事情也并不是绝对悲观的,我们已经看到有一大批人正在致力优化这个特性,新版本较老版本也有了一定改进,一些核心模块我们也可

core java 10~12(多线程 & I/O & Network网络编程)

MODULE 10 Threads 多线程-------------------------------- 进程: 计算机在运行过程中的任务单元,CPU在一个时间点上只能执行一个进程,但在一个时间段上采用时间分片原则. 特点: 每个进程执行时需要独立的数据空间,独立分配内存,多个进程间的资源互不共享.因此进程是非常耗费资源的 线程:是程序运行时的最小执行单位 特点: 1)线程依赖于进程 2)一个进程可以分为多个线程 例:QQ 3)*多线程可以共享资源 多进程和多线程的设计目的都是为了在同时执行多

18 多线程编程 - 《Python 核心编程》

?? 引言/动机 ?? 线程和进程 ?? 线程和 Python ?? thread 模块 ?? threading 模块 ?? 生产者-消费者问题和 Queue 模块 ?? 相关模块 18.1 引言/动机 18.2 线程和进程 什么是进程? 计算机程序只不过是磁盘中可执行的,二进制(或其它类型)的数据.它们只有在被读取到内 存中,被操作系统调用的时候才开始它们的生命期.进程(有时被称为重量级进程)是程序的一次 执行.每个进程都有自己的地址空间,内存,数据栈以及其它记录其运行轨迹的辅助数据.操作系

Python多线程(threading)学习总结

注:此文除了例子和使用心得是自己写的,很多都是Python核心编程中的原文.原文文风应该能看出来,就不每个地方单独表明出处了. 线程(有时被称为轻量级进程)跟进程有些相似,不同的是,所有的线程运行在同一个进程中,共享相同的运行环境.它们可以想像成是在主进程或"主线程"中并行运行的"迷你进程". 线程有开始,顺序执行和结束三部分.它有一个自己的指令指针,记录自己运行到什么地方.线程的运行可能被抢占(中断),或暂时的被挂起(也叫睡眠),让其它的线程运行,这叫做让步.一个

python 多线程编程

一)线程基础 1.创建线程: thread模块提供了start_new_thread函数,用以创建线程.start_new_thread函数成功创建后还能够对其进行操作. 其函数原型: start_new_thread(function,atgs[,kwargs]) 其參数含义例如以下: function: 在线程中运行的函数名 args:元组形式的參数列表. kwargs: 可选參数,以字典的形式指定參数 方法一:通过使用thread模块中的函数创建新线程. >>> import th

Python的多线程编程

提到多线程,很多人就会望而却步,本文将由浅入深地带你攻克python多线程编程,并防止你跳入深坑, 首先看一段简单的代码: 1 from time import ctime,sleep 2 def play_video(video): 3 for i in range(2): 4 print "i am playing video: %s at %s"%(video,ctime()) 5 sleep(4) 6 7 8 def play_music(music): 9 for i in

你必须掌握的多线程编程

1.多线程编程必备知识 1.1 进程与线程的概念 当我们打开一个应用程序后,操作系统就会为该应用程序分配一个进程ID,例如打开QQ,你将在任务管理器的进程选项卡看到QQ.exe进程,如下图: 进程可以理解为一块包含了某些资源的内存区域,操作系统通过进程这一方式把它的工作划分为不同的单元.一个应用程序可以对应于多个进程. 线程是进程中的独立执行单元,对于操作系统而言,它通过调度线程来使应用程序工作,一个进程中至少包含一个线程,我们把该线程成为主线程.线程与进程之间的关系可以理解为:线程是进程的执行