Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1662905
  • 博文数量: 695
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4027
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-20 21:22
文章分类

全部博文(695)

文章存档

2018年(18)

2017年(74)

2016年(170)

2015年(102)

2014年(276)

2013年(55)

分类: 系统运维

2015-09-23 16:29:41

  python中得thread的一些机制和C/C++不同:在C/C++中,主线程结束后,其子线程会默认被主线程kill掉。而在python中,主线程结束后,会默认等待子线程结束后,主线程才退出。

        python对于thread的管理中有两个函数:join和setDaemon

  • join:如在一个线程B中调用threada.join(),则threada结束后,线程B才会接着threada.join()往后运行。
  • setDaemon:主线程A启动了子线程B,调用b.setDaemaon(True),则主线程结束时,会把子线程B也杀死,与C/C++中得默认效果是一样的。

在这里给出一个例子:

点击(此处)折叠或打开

  1. 1 #! /usr/bin/env python
  2.  2

  3.  3 import threading

  4.  4 import time

  5.  5

  6.  6 class myThread(threading.Thread):

  7.  7 def __init__(self, threadname):

  8.  8 threading.Thread.__init__(self, name=threadname)

  9.  9 self.st = 2

  10. 10

  11. 11 def run(self):

  12. 12 time.sleep(self.st)

  13. 13 print self.getName()

  14. 14 def setSt(self, t):

  15. 15 self.st = t

  16. 16

  17. 17 def fun1():

  18. 18 t1.start()

  19. 19 print "fun1 done"

  20. 20

  21. 21 def fun2():

  22. 22 t2.start()

  23. 23 print "fun2 done"

  24. 24

  25. 25 t1=myThread("t1")

  26. 26 t2=myThread("t2")

  27. 27 t2.setSt(10);

  28. 28 # t2.setDaemon(True)
  29. 29 fun1()

  30. 30 fun2()

  31. 31 print "now u will see me"

阅读(1146) | 评论(0) | 转发(0) |
0

上一篇:同源策略

下一篇:CSRF的攻击与防御

给主人留下些什么吧!~~