Python多线程编程(二):启动线程的两种方法


Posted in Python onApril 05, 2015

在Python中我们主要是通过thread和threading这两个模块来实现的,其中Python的threading模块是对thread做了一些包装的,可以更加方便的被使用,所以我们使用threading模块实现多线程编程。一般来说,使用线程有两种模式,一种是创建线程要执行的函数,把这个函数传递进Thread对象里,让它来执行;另一种是直接从Thread继承,创建一个新的class,把线程执行的代码放到这个新的 class里。

将函数传递进Thread对象

'''  

Created on 2012-9-5  

 

@author:  walfred 

@module: thread.ThreadTest1  

@description: 

'''    

import threading  

 

def thread_fun(num):  

    for n in range(0, int(num)):  

        print " I come from %s, num: %s" %( threading.currentThread().getName(), n)  

 

def main(thread_num):  

    thread_list = list();  

    # 先创建线程对象  

    for i in range(0, thread_num):  

        thread_name = "thread_%s" %i  

        thread_list.append(threading.Thread(target = thread_fun, name = thread_name, args = (20,)))  

 

    # 启动所有线程     

    for thread in thread_list:  

        thread.start()  

 

    # 主线程中等待所有子线程退出  

    for thread in thread_list:  

        thread.join()  

 

if __name__ == "__main__":  

    main(3)

程序启动了3个线程,并且打印了每一个线程的线程名字,这个比较简单吧,处理重复任务就派出用场了,下面介绍使用继承threading的方式;

继承自threading.Thread类

''' 

Created on 2012-9-6 

 

@author: walfred 

@module: thread.ThreadTest2 

'''  

 

import threading  

 

class MyThread(threading.Thread):  

    def __init__(self):  

        threading.Thread.__init__(self);  

 

    def run(self):  

        print "I am %s" %self.name  

 

if __name__ == "__main__":  

    for thread in range(0, 5):  

        t = MyThread()  

        t.start()

接下来的文章,将会介绍如何控制这些线程,包括子线程的退出,子线程是否存活及将子线程设置为守护线程(Daemon)。

Python 相关文章推荐
初步剖析C语言编程中的结构体
Jan 16 Python
python动态加载包的方法小结
Apr 18 Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 Python
在Python中过滤Windows文件名中的非法字符方法
Jun 10 Python
python print出共轭复数的方法详解
Jun 25 Python
使用python模拟命令行终端的示例
Aug 13 Python
Python的条件锁与事件共享详解
Sep 12 Python
Python timeit模块的使用实践
Jan 13 Python
深入理解Python 多线程
Jun 16 Python
如何使用PyCharm及常用配置详解
Jun 03 Python
Python pandas之求和运算和非空值个数统计
Aug 07 Python
Python多线程编程(一):threading模块综述
Apr 05 #Python
Python中使用dom模块生成XML文件示例
Apr 05 #Python
Python中比较特别的除法运算和幂运算介绍
Apr 05 #Python
Python中使用logging模块打印log日志详解
Apr 05 #Python
Python中的两个内置模块介绍
Apr 05 #Python
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
Apr 05 #Python
Python中使用第三方库xlrd来写入Excel文件示例
Apr 05 #Python
You might like
PHP缓存机制Output Control详解
2014/07/14 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
2018/05/28 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
checkbox 多选框 联动实现代码
2008/10/22 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
用python实现百度翻译的示例代码
2018/03/09 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
Python实现验证码识别
2020/06/15 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
python爬取招聘要求等信息实例
2020/11/20 Python
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
十八大报告观后感
2014/01/28 职场文书
网络编辑岗位职责
2014/03/18 职场文书
汉语专业毕业生自荐信
2014/07/06 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python
详解Python中__new__方法的作用
2022/03/31 Python