python中使用threading进行多线程编程
2014-03-10 16:00
267 查看
http://www.01happy.com/python-multithreading/
详细:http://www.cnblogs.com/huxi/archive/2010/06/26/1765808.html
多线程,海词翻译为multithreading,就是在一个进程中开启多个线程,而后线程之间可以独立运行自己的任务,而不互相干扰。在python中有thread,threading模块可以实现多线程。从官方手册上来看,threading提供了比thread更高级的线程接口,所以建议使用threading模块。
线程开启方法
在threading模块中,开启线程使用如下方法:
其中target和args比较常用
target线程执行的方法
args 传递给方法的参数,元组对象
简单示例:
start(): 启动线程。
join([timeout]): 阻塞当前上下文环境的线程,直到调用此方法的线程终止或到达指定的timeout(可选参数)。
运行上面这个程序,可以看到两个线程会交替输出数据,没有什么规则。需要深入使用可以在官网查看详细的资料,使用起来不算很困难,关键还是要用对地方。
用在哪里
多线程其实就是cpu在不同线程之间进行切换执行,因为cpu的计算速度很快,所以看起来好像是同时执行。如果是计算密集型的任务,开启多线程效果反而不好,因为cpu在线程之间的切换也需要消耗。相反,如果是IO密集型的任务,使用多线程效果就很明显了,例如网络数据传输,文件读写等,因为处于IO阻塞时,cpu会等待IO完成,此时基本不消耗cpu资源。
关于python多线程不支持多核的说法
笔者有一次写了一个多线程的程序,发现运行起来,其中一核占用达到100%,其他三核没什么占用,但是会在不同的核心之间切换,一会这个核100%,一会那个核100%。看来网上的说法python线程不支持多核应当是正确的。
参考资料:
官方手册:http://docs.python.org/2/library/threading.html?highlight=thread
详细:http://www.cnblogs.com/huxi/archive/2010/06/26/1765808.html
多线程,海词翻译为multithreading,就是在一个进程中开启多个线程,而后线程之间可以独立运行自己的任务,而不互相干扰。在python中有thread,threading模块可以实现多线程。从官方手册上来看,threading提供了比thread更高级的线程接口,所以建议使用threading模块。
线程开启方法
在threading模块中,开启线程使用如下方法:
1 | threading.Thread(group = None , target = None , name = None , args = (), kwargs = {}) |
target线程执行的方法
args 传递给方法的参数,元组对象
简单示例:
1 | #!/usr/bin/env python |
2 | #coding=utf8 |
3 |
4 | import threading |
5 |
6 | def loop2(): |
7 | for i in range ( 10000 , 20000 ): |
8 | i |
9 |
10 | def loop(): |
11 | for i in range ( 1 , 10000 ): |
12 | i |
13 |
14 | #创建两个线程 |
15 | t = threading.Thread(target = loop) |
16 | t2 = threading.Thread(target = loop2) |
17 | #线程开始运行 |
18 | t.start() |
19 | t2.start() |
20 | #线程挂起,直到线程结束 |
21 | t.join() |
22 | t2.join() |
join([timeout]): 阻塞当前上下文环境的线程,直到调用此方法的线程终止或到达指定的timeout(可选参数)。
运行上面这个程序,可以看到两个线程会交替输出数据,没有什么规则。需要深入使用可以在官网查看详细的资料,使用起来不算很困难,关键还是要用对地方。
用在哪里
多线程其实就是cpu在不同线程之间进行切换执行,因为cpu的计算速度很快,所以看起来好像是同时执行。如果是计算密集型的任务,开启多线程效果反而不好,因为cpu在线程之间的切换也需要消耗。相反,如果是IO密集型的任务,使用多线程效果就很明显了,例如网络数据传输,文件读写等,因为处于IO阻塞时,cpu会等待IO完成,此时基本不消耗cpu资源。
关于python多线程不支持多核的说法
笔者有一次写了一个多线程的程序,发现运行起来,其中一核占用达到100%,其他三核没什么占用,但是会在不同的核心之间切换,一会这个核100%,一会那个核100%。看来网上的说法python线程不支持多核应当是正确的。
参考资料:
官方手册:http://docs.python.org/2/library/threading.html?highlight=thread
相关文章推荐
- python中使用threading进行多线程编程 分类: python Module 2014-03-10 16:00 277人阅读 评论(0) 收藏
- 52.[Python]使用threading进行多线程编程
- python中使用threading进行多线程编程
- Python 3.4.3 使用threading模块进行多线程编码实现
- Python:使用threading模块实现多线程编程
- Python:使用threading模块实现多线程编程
- Python多线程编程(threading ):使用Lock互斥锁RLock
- 【转】使用python进行多线程编程
- Python:使用threading模块实现多线程编程
- python3 使用threading模块进行多线程编码实现
- 使用 Python 进行分布式系统协调
- 详细介绍windows下使用python pylot进行网站压力测试
- 使用 Python 进行分布式系统协调
- 使用python及百度API对百度poi数据进行爬取(二)
- Caffe在Python中使用内存数据(MemoryData)进行训练
- 使用OpenCV进行标定(Python)
- windows中使用Python进行AES加密解密-文本文件加密工具
- 使用python及百度API对百度poi数据进行爬取(三)
- 使用python进行新浪微博应用开发
- 使用Python进行多进程编程