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 相关文章推荐
python下如何让web元素的生成更简单的分析
Jul 17 Python
Python使用metaclass实现Singleton模式的方法
May 05 Python
Python中asyncore异步模块的用法及实现httpclient的实例
Jun 28 Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
python制作websocket服务器实例分享
Nov 20 Python
pycharm中连接mysql数据库的步骤详解
May 02 Python
详解python之协程gevent模块
Jun 14 Python
利用python在excel里面直接使用sql函数的方法
Feb 08 Python
Pandas之排序函数sort_values()的实现
Jul 09 Python
详解python播放音频的三种方法
Sep 23 Python
Python3 把一个列表按指定数目分成多个列表的方式
Dec 25 Python
Python实现数字的格式化输出
Aug 01 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
PHPShop存在多个安全漏洞
2006/10/09 PHP
PHP新手上路(九)
2006/10/09 PHP
php Static关键字实用方法
2010/06/04 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
基于jQuery插件实现点击小图显示大图效果
2016/05/11 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
JavaScript实现商品评价五星好评
2020/11/30 Javascript
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
Python中的Descriptor描述符学习教程
2016/06/02 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
pip指定python位置安装软件包的方法
2019/07/12 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
法国隐形眼镜网站:VisionDirect.fr
2020/03/03 全球购物
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
北京SQL新华信咨询
2016/09/30 面试题
医科大学生毕业的自我评价分享
2013/11/12 职场文书
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
文化产业实施方案
2014/06/07 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
MySQL 如何设计统计数据表
2021/06/15 MySQL
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
2021/09/25 Java/Android
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技