python多线程threading事件对象event实现线程阻塞及timer时间对象

雨点打透心脏的1/2处 2022-06-15 08:43 119阅读 0赞

事件对象:
可以用于简单的进程之间的通信,当线程需执行其他操作时,阻塞线程
class threading.Event

1.is_set() / isSet()
2.set()
3.clear()
4.wait([timeout])

示例:

  1. # encoding: UTF-8
  2. import threading
  3. import time
  4. event = threading.Event()
  5. def FunEvent():
  6. print '%s -- %s start wait ...' % (time.ctime(),threading.currentThread().getName())
  7. event.wait()
  8. print '%s -- %s end wait ...' % (time.ctime(), threading.currentThread().getName())
  9. def bet_fun():
  10. print '%s enter bet_fun '%time.ctime()
  11. time.sleep(1)
  12. print '%s out bet_fun ' % time.ctime()
  13. Th1 = threading.Thread(target=FunEvent,name="Th-1")
  14. Th2 = threading.Thread(target=FunEvent,name="Th-2")
  15. Th1.start()
  16. Th2.start()
  17. time.sleep(1)
  18. bet_fun()
  19. event.set()

结果:

  1. Sun May 28 23:25:12 2017 -- Th-1 start wait ...
  2. Sun May 28 23:25:12 2017 -- Th-2 start wait ...
  3. Sun May 28 23:25:13 2017 enter bet_fun
  4. Sun May 28 23:25:14 2017 out bet_fun
  5. Sun May 28 23:25:14 2017 -- Th-1 end wait ...
  6. Sun May 28 23:25:14 2017 -- Th-2 end wait ...

时间对象:
class threading.Timer(interval, function, args=[], kwargs={})
interval时间,单位秒
function函数名称
方法:
1.start()
2.cancel()
例如:

  1. def hello():
  2. print "hello, world"
  3. t = threading.Timer(3, hello)
  4. t.start()

发表评论

表情:
评论列表 (有 0 条评论,119人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Thread实现线

    运行下面的代码,我们会发现T1、T2交替执行。这是实现多线程最简单的方式,它的局限性在于如果当前类已经继承了别的类,就无法使用这种方式来实现多线程了,因为java中只能单继承。

    相关 Thread线线

    1.进程、线程、并发、并行是什么? 1)进程:操作系统中可以运行多个任务(程序),这些运行的任务(程序)被称为进程。程序的运行产生进程(内存空间、程序执行的堆栈),可以这样说