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检测手机QQ在线状态的脚本代码
Feb 10 Python
python检测lvs real server状态
Jan 22 Python
Python中利用sorted()函数排序的简单教程
Apr 27 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
python用pandas数据加载、存储与文件格式的实例
Dec 07 Python
对Pyhon实现静态变量全局变量的方法详解
Jan 11 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 Python
使用TensorFlow对图像进行随机旋转的实现示例
Jan 20 Python
python正则表达式实例代码
Mar 03 Python
sqlalchemy实现时间列自动更新教程
Sep 02 Python
用python基于appium模块开发一个自动收取能量的小助手
Sep 25 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基础学习笔记
2007/03/18 PHP
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
php 基础函数
2017/02/10 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
再谈JavaScript线程
2015/07/10 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
nodejs实现简单的gulp打包
2017/12/21 NodeJs
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
python下载文件时显示下载进度的方法
2015/04/02 Python
自己使用总结Python程序代码片段
2015/06/02 Python
Python提取Linux内核源代码的目录结构实现方法
2016/06/24 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
python三方库之requests的快速上手
2019/03/04 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
游戏商店:Eneba
2020/04/25 全球购物
先进班级集体事迹材料
2014/01/30 职场文书
机关干部三严三实心得体会
2014/10/13 职场文书
2014年幼儿园个人工作总结
2014/11/10 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
检讨书格式
2015/01/23 职场文书
社区党建工作总结2015
2015/05/13 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书
基于Python实现将列表数据生成折线图
2022/03/23 Python
nginx配置之并发频次限制
2022/04/18 Servers