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之关于循环的小伎俩
Oct 02 Python
Python向MySQL批量插数据的实例讲解
Mar 31 Python
解决Django migrate No changes detected 不能创建表的问题
May 27 Python
Python生成短uuid的方法实例详解
May 29 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
详解python读取和输出到txt
Mar 29 Python
详解Python使用Plotly绘图工具,绘制甘特图
Apr 02 Python
Tensorflow的常用矩阵生成方式
Jan 04 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
Mar 06 Python
Python pandas对excel的操作实现示例
Jul 21 Python
Python图像识别+KNN求解数独的实现
Nov 13 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 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
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
PHP中的类型约束介绍
2015/05/11 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
php生出随机字符串
2017/07/06 PHP
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
jquery 输入框数字限制插件
2009/11/10 Javascript
解析window.open的使用方法总结
2013/06/19 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
2016/06/13 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
jQuery复合事件用法示例
2017/06/10 jQuery
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
小程序实现选择题选择效果
2018/11/04 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
vuejs中父子组件之间通信方法实例详解
2020/01/17 Javascript
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
Python实现八大排序算法
2016/08/13 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
python实现字典嵌套列表取值
2019/12/16 Python
Python extract及contains方法代码实例
2020/09/11 Python
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
2014年班主任自我评价范文
2014/04/23 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
六年级作文之预言作文
2019/10/25 职场文书
mysql 带多个条件的查询方式
2021/06/05 MySQL