解析Python多线程编程两种表现方式

移动开发
解析Python多线程编程两种表现方式是本文介绍的内容,先来看本文详细内容介绍。

本文介绍的是解析Python多线程编程两种表现方式。Python中如果要使用线程的话,python的lib中提供了两种方式。一种是函数式,一种是用类来包装的线程对象。(例子已经稍加修改)

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

Python语言 : 临时自用代码 

  1. import time  
  2. import thread  
  3. import sys  
  4. TIMEOUT = 20 
  5. def myThread(no, interval):  
  6.     timeTotal = 0 
  7.     while True:  
  8.         if timeTotal < TIMEOUT: 
  9.             print "Thread(%d): timeTotal(%d)\n"%(no, timeTotal)  
  10.             timeTotal += interval  
  11.         else:  
  12.             print "Thread(%d) exits!\n"%no  
  13.             break  
  14. def test():  
  15.     thread.start_new_thread(myThread, (1, 2))  
  16.     thread.start_new_thread(myThread, (2, 3))  
  17. if __name__ == '__main__':  
  18.     test()  

这个是

  1. 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.  
  4. class MyThread(threading.Thread):  
  5.     def __init__(self, no, interval):  
  6.         threading.Thread.__init__(self)  
  7.         self.no = no  
  8.         self.interval = interval  
  9.  
  10.     def run(self):  
  11.         while self.interval > 0:  
  12.             print "ThreadObject(%d) : total time(%d)\n"%(self.no, self.interval)  
  13.             time.sleep(1)  
  14.             self.interval -1 
  15. def test():  
  16.     thread1 = MyThread(1, 10)  
  17.     thread2 = MyThread(2, 20)  
  18.     thread1.start()  
  19.     thread2.start()  
  20.     thread1.join()  
  21.     thread2.join()  
  22.  
  23. if __name__ == '__main__':  
  24.     test()  

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

小结:关于解析Python多线程编程两种表现方式的内容介绍完了,希望本文对你有所帮助。

责任编辑:zhaolei 来源: 互联网
相关推荐

2010-02-02 14:32:32

Python线程编程

2010-07-14 10:30:26

Perl多线程

2011-06-29 16:25:11

Qt Signal Slot

2010-07-13 14:54:15

Perl面向对象编程

2010-07-27 15:03:37

Flex ArrayC

2011-08-09 13:50:01

iPhone动画UIView

2010-03-03 17:44:07

Python多线程

2020-02-21 17:33:17

SparkKafka数据

2011-03-03 10:26:04

Pureftpd

2011-08-08 14:13:47

iPhone XML NSXMLParse

2010-09-07 11:09:59

2011-08-03 16:26:14

iPhone UIView 动画

2011-08-03 16:35:10

iPhone UIView 动画

2010-08-06 09:38:11

Flex读取XML

2023-03-29 13:06:36

2009-06-23 18:18:13

SpringHibernate

2010-04-20 15:32:20

主控负载均衡

2010-10-21 16:24:18

sql server升

2009-06-25 13:43:00

Buffalo AJA

2021-05-27 10:57:01

TCP定时器网络协议
点赞
收藏

51CTO技术栈公众号