Ven*_*nom 5 python timer python-multithreading python-2.7
我有一个多线程SMTP服务器.每个线程负责一个客户端.我需要在每个服务器线程上设置10秒的超时值,以终止休眠或行为不端的客户端.
我用过time.time(),找到了开始时间和检查点时间,差异给出了运行时间.但我相信它给了系统时间而不是这个线程运行的时间.
Python中是否有Thread本地计时器API?
import threading
stop = 0
def hello():
stop = 1
t=threading.Timer(10,hello)
t.start()
while stop != 1:
print stop
print "stop changed"
Run Code Online (Sandbox Code Playgroud)
这会在循环中打印0(初始停止)并且不会出现在while循环中.
在python文档中没有提到"线程计时".时钟在整个过程中或系统范围内.特别是time.clock在time.time返回系统时间的同时测量处理时间.
在python3.3中,时序API被修改和改进但仍然,我看不到任何会返回单个线程所花费的处理时间的计时器.
另请注意,即使可能,编写此类计时器也不容易.定时器是特定于操作系统的,因此您必须为每个操作系统编写不同版本的模块.如果要分析特定操作,只需在没有线程的情况下启动它.当线程化时,它按预期运行,或者因操作系统而慢很多,在这种情况下你不能对它做任何事情(至少,如果你不想写一个"修复"的补丁) GIL或安全删除它).