关于 python 的线程问题

2015-11-01 23:08:24 +08:00
 MartinWu
代码如图所示:
---

from threading import Timer
import time

timer_i = 1

def delayrun():
print "running..."
t = Timer(timer_i, delayrun)
t.start()

t = Timer(timer_i, delayrun)
t.start()

while True:
time.sleep(0.1)
print "main process..."

想问的是, delayrun 这样被嵌套调用,应该是会入栈的吧,但是实际运行时,观察线程数跟内存啊, cpu 之类的都一直稳定在某个值左右。

求解释下这里的结构。。
2887 次点击
所在节点    Python
3 条回复
xiazi
2015-11-02 02:30:47 +08:00
delayrun 并没有被嵌套调用, 只是作为 Timer 的回调, 你这段代码的作用实际相当于一个 loop:

while 1:
sleep(timer_i)
print "running..."
ryanking8215
2015-11-02 08:52:23 +08:00
delayrun 每次跑起定时器后就退出去了,没有嵌套
waklin
2015-11-02 10:35:10 +08:00
t.start()是异步的并不阻塞当前函数, t.start()完成后,当前线程函就结束了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/232775

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX