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变量与常量
Jun 02 Python
利用python爬取散文网的文章实例教程
Jun 18 Python
python实现分页效果
Oct 25 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
python实现的按要求生成手机号功能示例
Oct 08 Python
提升python处理速度原理及方法实例
Dec 25 Python
通过python连接Linux命令行代码实例
Feb 18 Python
pytorch进行上采样的种类实例
Feb 18 Python
Python爬虫之Selenium设置元素等待的方法
Dec 04 Python
Numpy ndarray 多维数组对象的使用
Feb 10 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
Mar 02 Python
python tkinter Entry控件的焦点移动操作
May 22 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获取数组中重复最多的元素的实现方法
2014/11/11 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
python利用微信公众号实现报警功能
2018/06/10 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
python虚拟环境完美部署教程
2019/08/06 Python
python实现代码统计器
2019/09/19 Python
python如何使用Redis构建分布式锁
2020/01/16 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
自荐书模板
2013/12/15 职场文书
中学教师管理制度
2014/01/14 职场文书
幼儿园开学家长寄语
2014/01/19 职场文书
中学生期末评语
2014/02/03 职场文书
运动会领导邀请函
2014/02/05 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
雨雪天气温馨提示
2015/07/15 职场文书