`
guanjh
  • 浏览: 229569 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Python线程编程的两种方式

阅读更多

Python中如果要使用线程的话,python的lib中提供了两种方式。一种是函数式,一种是用类来包装的线程对象。举两个简单的例子希望起到抛砖引玉的作用,关于多线程编程的其他知识例如互斥、信号量、临界区等请参考python的文档及相关资料。

1、调用thread模块中的start_new_thread()函数来产生新的线程,请看代码:

python 代码
  1. ###        thread_example.py   
  2. import time  
  3. import thread  
  4. def timer(no,interval):  #自己写的线程函数   
  5.         while True:   
  6.                 print 'Thread :(%d) Time:%s'%(no,time.ctime())   
  7.                 time.sleep(interval)   
  8. def test(): #使用thread.start_new_thread()来产生2个新的线程   
  9.         thread.start_new_thread(timer,(1,1))     
  10.         thread.start_new_thread(timer,(2,3))   
  11. if __name__=='__main__':   
  12.         test()  

 

这个是thread.start_new_thread(function,args[,kwargs])函数原型,其中function参数是你将要调用的线程函数;args是讲传递给你的线程函数的参数,他必须是个tuple类型;而kwargs是可选的参数。
线程的结束一般依靠线程函数的自然结束;也可以在线程函数中调用thread.exit(),他抛出SystemExit exception,达到退出线程的目的。

2、通过调用threading模块继承threading.Thread类来包装一个线程对象。请看代码:

python 代码
  1. import threading  
  2. import time  
  3. class timer(threading.Thread):     #我的timer类继承自threading.Thread类   
  4.     def __init__(self,no,interval):    
  5.         #在我重写__init__方法的时候要记得调用基类的__init__方法   
  6.         threading.Thread.__init__(self)        
  7.         self.no=no   
  8.         self.interval=interval   
  9.            
  10.     def run(self):  #重写run()方法,把自己的线程函数的代码放到这里   
  11.         while True:   
  12.             print 'Thread Object (%d), Time:%s'%(self.no,time.ctime())   
  13.             time.sleep(self.interval)   
  14.                
  15. def test():   
  16.     threadone=timer(1,1)    #产生2个线程对象   
  17.     threadtwo=timer(2,3)   
  18.     threadone.start()   #通过调用线程对象的.start()方法来激活线程   
  19.     threadtwo.start()   
  20.        
  21. if __name__=='__main__':   
  22.     test()  

其实thread和threading的模块中还包含了其他的很多关于多线程编程的东西,例如锁、定时器、获得激活线程列表等等,请大家仔细参考python的文档!

分享到:
评论
3 楼 binoruv 2010-11-26  
有问题,会出现异常
2 楼 yanite 2008-03-05  
这段代码在有的地方会有问题,
sleep要放在主函数中的。
1 楼 andijo 2007-08-13  
感觉Python很多地方和Java很相似,呵呵

相关推荐

    Python网络编程基础【线程的创建】源码,两种方式

    Python网络编程基础,两种方式创建线程的源码文件

    Python线程的两种编程方式

    Python中如果要使用线程的话,python的lib中提供了两种方式。一种是函数式,一种是用类来包装的线程对象。举两个简单的例子希望起到抛砖引玉的作用,关于多线程编程的其他知识例如互斥、信号量、临界区等请参考...

    Python多线程套接字编程.docx

    Python多线程套接字编程全文共10页,...线程的创建 线程的创建一般有两种方式:一种是直接使用threading模块的Thread函数,另一种是继承Thread类并重写其run方法。 Python多线程套接字编程全文共10页,当前为第2页。

    python并行编程 中文版

    本章中讲述了并行编程的两种解释,第 一种解释是基于系统架构的,第二种解释基于程序示例F。 并行编程对程序员来说一直是一项挑战。 本章 讨论并行程序的设计方法的时候,深入讲了这种编程方法。 本章最后简单介绍...

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

    在Python中我们主要是通过thread和threading这两个模块来实现的,其中Python的threading模块是对thread做了一些包装的,可以更加方便的被使用,所以我们使用threading模块实现多线程编程。一般来说,使用线程有两种...

    Python多线程编程(四):使用Lock互斥锁

    前面已经演示了Python:使用threading模块实现多线程编程二两种方式起线程和Python:使用threading模块实现多线程编程三threading.Thread类的重要函数,这两篇文章的示例都是演示了互不相干的独立线程,现在我们考虑...

    Python函数式编程

    锁有两种状态:锁定和未锁定。每当一个线程要访问共享数据时,必须先获得锁定;如果已经有别的线程获得锁定了,那么就让线程暂停,也就是同步阻塞;等到线程访问完毕,释放锁以后,再让线程继续。 线程通信(条件...

    Python编程入门经典

    13.1 Python的GUI编程工具箱 213 13.2 Tkinter简介 215 13.3 用Tkinter创建GUI 小组件 215 13.3.1 改变小组件的尺寸 215 13.3.2 配置小组件选项 216 13.3.3 使用小组件 217 13.3.4 创建布局 217 13.3.5 填充顺序 218...

    Python灰帽子-黑客与逆向工程师的Python编程之道[简体中文版]

    中文名: Python灰帽子-黑客与逆向工程师的Python编程之道 原名: Gray Hat Python:Python Programming for Hackers and Reverse Engineers 作者:Justin Seitz 资源格式: PDF 版本: 扫描版 出版社: 电子工业出版社 ...

    Python线程指南详细介绍

    本文介绍了Python对于线程的支持,包括“学会”多线程编程需要掌握的基础以及Python两个线程标准库的完整介绍及使用示例。 注意:本文基于Python2.4完成,;如果看到不明白的词汇请记得百度谷歌或维基,whatever。 1...

    Python多线程编程(五):死锁的形成

    前一篇文章Python:使用threading模块实现多线程编程四[使用Lock互斥锁]我们已经开始涉及到如何使用互斥锁来保护我们的公共资源了,现在考虑下面的情况– 如果有多个公共资源,在线程间共享多个资源的时候,如果两个...

    110道Python面试题:.pdf

    以下是 Python 面试题大全,涵盖了 Python 的基础知识、语法、标准库、面向对象编程、多线程编程等方面。 1. Python 基础知识 Python 是一种高级编程语言,支持多种编程范式,包括面向对象编程、函数式编程、反射...

    Python threading多线程编程实例

    Python 的多线程有两种实现方法: 函数,线程类 1.函数 调用 thread 模块中的 start_new_thread() 函数来创建线程,以线程函数的形式告诉线程该做什么 复制代码 代码如下: # -*- coding: utf-8 -*- import thread ...

    详解Python并发编程之创建多线程的几种方法

    经过总结,Python创建多线程主要有如下两种方法: 函数 类 接下来,我们就来揭开多线程的神秘面纱。 . 学会使用函数创建多线程 在Python3中,Python提供了一个内置模块 threading.Thread,可以很方便地让我们创建...

    Python线程指南分享

    本文介绍了Python对于线程的支持,包括“学会”多线程编程需要掌握的基础以及Python两个线程标准库的完整介绍及使用示例。 注意:本文基于Python2.4完成,;如果看到不明白的词汇请记得百度谷歌或维基,whatever。 1...

    2019千峰Python超详细入门教程(百度云盘分享).docx

    单例的三种实现方式&__repr__&__str__&继承概述1.mp4 │ 千锋Python教程:76.单例的三种实现方式&__repr__&__str__&继承概述2.mp4 │ 千锋Python教程:77.继承的实现&继承体系&栈和队列&python2;.2之前的...

    Python中尝试多线程编程的一个简明例子

    综述  多线程是程序设计中的一个重要方面,尤其是在服务器Deamon程序方面。无论何种系统,线程... 网上有些朋友说要获得真正多CPU的好处,有两种方法:  1.可以创建多个进程而不是线程,进程数和cpu一样多。  2.

    Python中线程编程之threading模块的使用详解

    有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法;另一种是创建一个threading.Thread对象,在它的初始化函数(__init__)中将可调用对象作为参数传入。下面分别举例说明。先来看看通过继承threading...

Global site tag (gtag.js) - Google Analytics