`
guanjh
  • 浏览: 233569 次
  • 性别: 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多线程编程(6寸)[归纳].pdf

    Python多线程编程是利用Python实现程序并行性的一种方式,尤其适合于处理异步、并发事务和资源密集型任务。在多线程环境中,多个线程可以同时执行,提高程序效率,尤其对于那些需要从多个输入源处理数据或者进行大量...

    第20章 Python多线程编程.pdf

    Python多线程编程是一种允许程序同时执行多个线程的技术,以实现程序的并行处理。这通常适用于那些可以分解为多个独立任务的程序,其中各个任务之间能够并发执行,从而提高程序的效率和响应速度。 在操作系统中,...

    python并行编程pdf

    在多线程编程中,Python使用threading模块提供了基础的线程操作功能。线程同步机制包括Lock、RLock、信号量(Semaphore)、条件(Condition)、事件(Event)等。通过这些同步机制可以有效地避免竞态条件,保证线程...

    python之多线程编程1

    Python 多线程编程是 Python 编程语言中的一种重要概念。通过多线程编程,Python 开发者可以同时执行多个任务,从而提高程序的执行效率和响应速度。在本文中,我们将介绍 Python 中的多线程编程基础知识,包括多...

    Python线程的两种编程方式

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

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

    本资源包提供了关于Python中线程创建的基础知识,通过两种不同的方法来演示如何在Python中创建线程。 首先,Python提供了`threading`模块来支持多线程编程。`threading.Thread`是核心的线程类,我们可以直接实例化...

    Python多线程编程简单介绍

    总之,Python多线程编程是一种提高程序并发处理能力的有效手段。通过合理利用多线程,可以使程序执行效率得到显著提升。但同时也要注意线程安全和同步问题,避免因线程间的不恰当交互导致的数据错误和死锁问题。本文...

    深入python编程, learning python编程,两本chm版

    "深入Python编程"则是针对中文读者的一本Python进阶教程,它可能涵盖了Python的深入话题,如元编程、内存管理、性能优化、多线程和并发、Python的C扩展等。这本书适合已经对Python有一定了解的读者,通过阅读可以...

    python并发编程资料合集

    在Python中,还有线程(threading模块)和进程(multiprocessing模块)两种并发机制。线程适用于共享数据的情况,但存在全局解释器锁(GIL)的限制,导致在单核系统中无法充分利用多核优势。而进程则可以完全避开GIL...

    Python多线程编程的实践指南.docx

    根据提供的文档信息,本文主要介绍了Python中的多线程编程实践指南。尽管文档标题与内容存在不一致(标题提及了“Python多线程编程的实践指南”而内容却涉及到了Matlab),这里我们将聚焦于Python多线程编程的相关...

    Python多线程学习

    这两种方式都是基于Python的标准库`thread`和`threading`来实现的。 #### 函数方式创建线程 使用`thread`模块中的`start_new_thread()`函数可以方便地启动一个新的线程。该函数接受两个参数:一个是目标函数,另一...

    Python技术如何进行多线程编程.docx

    多线程编程作为一种高效的任务处理方式,在现代软件开发中扮演着至关重要的角色。尤其对于Python这种广泛应用的语言来说,掌握多线程编程的技术显得尤为重要。下面详细介绍多线程编程的主要优势: 1. **提高程序...

    【个人总结系列-27】Python网络编程与多线程编程-学习总结.docx

    在Python编程中,网络编程和多线程编程是两个重要的领域,它们允许程序高效地处理并发和网络通信。以下是对这两个主题的详细解释。 **Python网络编程** Python网络编程主要依赖于`socket`库,它提供了低级别的接口...

    【个人总结系列-27】Python网络编程与多线程编程-学习总结 (2).docx

    在Python中,多线程编程可以通过两种方式实现: 1. 函数式:使用thread模块的start_new_thread函数创建线程。 2. 类式:继承Thread类并重写run方法。 例如,函数式创建线程的代码: ```python import thread import...

    Python网络编程和系统编程.zip

    Python是一种广泛使用的高级编程语言,尤其在Web开发、数据分析、人工智能等领域有广泛应用。"Python网络编程"和"Python系统编程"是Python学习中的两个重要分支,对于深入理解Python及其在实际场景中的应用至关重要...

    C语言中文网python并发编程教程

    Python中有两种方式来创建线程:使用threading模块中的Thread类的构造器创建线程,以及继承threading模块中的Thread类创建线程类。Thread类提供了如下的__init__()构造器,可以用来创建线程。该构造方法中,以上所有...

    python核心编程中文版-PDF

    12. **XML和JSON处理**:介绍如何使用Python解析和生成XML和JSON,这两种常见的数据交换格式。 13. **单元测试和调试**:教授如何编写和运行单元测试,使用`unittest`和`pytest`框架,以及调试技巧。 14. **Python...

Global site tag (gtag.js) - Google Analytics