changeset: 77243:1345cf58738d user: Victor Stinner date: Wed May 30 13:30:32 2012 +0200 files: Lib/sched.py Lib/subprocess.py Lib/trace.py Misc/NEWS description: Close #14690: Use monotonic clock instead of system clock in the sched, subprocess and trace modules. diff -r 94a5bf416e50 -r 1345cf58738d Lib/sched.py --- a/Lib/sched.py Tue May 29 22:55:43 2012 -0700 +++ b/Lib/sched.py Wed May 30 13:30:32 2012 +0200 @@ -35,6 +35,10 @@ import threading except ImportError: import dummy_threading as threading +try: + from time import monotonic as _time +except ImportError: + from time import time as _time __all__ = ["scheduler"] @@ -48,7 +52,7 @@ class scheduler: - def __init__(self, timefunc=time.time, delayfunc=time.sleep): + def __init__(self, timefunc=_time, delayfunc=time.sleep): """Initialize a new instance, passing the time and delay functions""" self._queue = [] diff -r 94a5bf416e50 -r 1345cf58738d Lib/subprocess.py --- a/Lib/subprocess.py Tue May 29 22:55:43 2012 -0700 +++ b/Lib/subprocess.py Wed May 30 13:30:32 2012 +0200 @@ -349,6 +349,10 @@ import builtins import warnings import errno +try: + from time import monotonic as _time +except ImportError: + from time import time as _time # Exception classes used by this module. class SubprocessError(Exception): pass @@ -894,7 +898,7 @@ self.wait() else: if timeout is not None: - endtime = time.time() + timeout + endtime = _time() + timeout else: endtime = None @@ -917,14 +921,14 @@ if endtime is None: return None else: - return endtime - time.time() + return endtime - _time() def _check_timeout(self, endtime, orig_timeout): """Convenience for checking if a timeout has expired.""" if endtime is None: return - if time.time()> endtime: + if _time()> endtime: raise TimeoutExpired(self.args, orig_timeout) @@ -1471,7 +1475,7 @@ # printing. if endtime is not None or timeout is not None: if endtime is None: - endtime = time.time() + timeout + endtime = _time() + timeout elif timeout is None: timeout = self._remaining_time(endtime) diff -r 94a5bf416e50 -r 1345cf58738d Lib/trace.py --- a/Lib/trace.py Tue May 29 22:55:43 2012 -0700 +++ b/Lib/trace.py Wed May 30 13:30:32 2012 +0200 @@ -61,6 +61,10 @@ import dis import pickle from warnings import warn as _warn +try: + from time import monotonic as _time +except ImportError: + from time import time as _time try: import threading @@ -476,7 +480,7 @@ self._caller_cache = {} self.start_time = None if timing: - self.start_time = time.time() + self.start_time = _time() if countcallers: self.globaltrace = self.globaltrace_trackcallers elif countfuncs: @@ -614,7 +618,7 @@ self.counts[key] = self.counts.get(key, 0) + 1 if self.start_time: - print('%.2f' % (time.time() - self.start_time), end=' ') + print('%.2f' % (_time() - self.start_time), end=' ') bname = os.path.basename(filename) print("%s(%d): %s" % (bname, lineno, linecache.getline(filename, lineno)), end='') @@ -627,7 +631,7 @@ lineno = frame.f_lineno if self.start_time: - print('%.2f' % (time.time() - self.start_time), end=' ') + print('%.2f' % (_time() - self.start_time), end=' ') bname = os.path.basename(filename) print("%s(%d): %s" % (bname, lineno, linecache.getline(filename, lineno)), end='') diff -r 94a5bf416e50 -r 1345cf58738d Misc/NEWS --- a/Misc/NEWS Tue May 29 22:55:43 2012 -0700 +++ b/Misc/NEWS Wed May 30 13:30:32 2012 +0200 @@ -60,6 +60,9 @@ Library ------- +- Issue #14690: Use monotonic clock instead of system clock in the sched, + subprocess and trace modules. + - Issue #14958: Change IDLE systax highlighting to recognize all string and byte literals supported in Python 3.3.

AltStyle によって変換されたページ (->オリジナル) /