The method executes the number of Python calls given by the argument, directly
and again under the profiler, measuring the time for both. It then computes the
hidden overhead per profiler event, and returns that as a float. For example,
-on a 1.8Ghz Intel Core i5 running Mac OS X, and using Python's time.clock() as
+on a 1.8Ghz Intel Core i5 running Mac OS X, and using Python's time.process_time() as
the timer, the magical number is about 4.04e-6.
The object of this exercise is to get a fairly consistent result. If your
.. function:: perf_counter()
+ .. index::
+ single: benchmarking
+
Return the value (in fractional seconds) of a performance counter, i.e. a
clock with the highest available resolution to measure a short duration. It
does include time elapsed during sleep and is system-wide. The reference
.. function:: process_time()
+ .. index::
+ single: CPU time
+ single: processor time
+ single: benchmarking
+
Return the value (in fractional seconds) of the sum of the system and user
CPU time of the current process. It does not include time elapsed during
sleep. It is process-wide by definition. The reference point of the
def run_test(rep, msg, func, arg=None):
## items = [None] * rep
items = range(rep)
- from time import clock
+ from time import perf_counter as clock
if arg is not None:
start = clock()
for i in items:
def run_test(rep, msg, func, arg):
items = range(rep)
- from time import clock
+ from time import perf_counter as clock
start = clock()
for i in items:
func(arg); func(arg); func(arg); func(arg); func(arg)
self.t = r[0] + r[1] - t # put back unrecorded delta
# Dispatch routine for best timer program (return = scalar, fastest if
- # an integer but float works too -- and time.clock() relies on that).
+ # an integer but float works too -- and time.process_time() relies on that).
def trace_dispatch_i(self, frame, event, arg):
timer = self.timer
import time
import threading
import unittest
+import warnings
try:
import _testcapi
except ImportError:
self.assertTrue(info.adjustable)
def test_clock(self):
- time.clock()
+ with self.assertWarns(DeprecationWarning):
+ time.clock()
- info = time.get_clock_info('clock')
+ with self.assertWarns(DeprecationWarning):
+ info = time.get_clock_info('clock')
self.assertTrue(info.monotonic)
self.assertFalse(info.adjustable)
pass
self.assertEqual(time.strftime('%Z', tt), tzname)
- @unittest.skipUnless(hasattr(time, 'monotonic'),
- 'need time.monotonic')
def test_monotonic(self):
# monotonic() should not go backward
times = [time.monotonic() for n in range(100)]
self.assertTrue(info.monotonic)
self.assertFalse(info.adjustable)
- @unittest.skipUnless(hasattr(time, 'monotonic'),
- 'need time.monotonic')
@unittest.skipUnless(hasattr(time, 'clock_settime'),
'need time.clock_settime')
def test_monotonic_settime(self):
self.assertRaises(ValueError, time.ctime, float("nan"))
def test_get_clock_info(self):
- clocks = ['clock', 'perf_counter', 'process_time', 'time']
- if hasattr(time, 'monotonic'):
- clocks.append('monotonic')
+ clocks = ['clock', 'monotonic', 'perf_counter', 'process_time', 'time']
for name in clocks:
- info = time.get_clock_info(name)
+ if name == 'clock':
+ with self.assertWarns(DeprecationWarning):
+ info = time.get_clock_info('clock')
+ else:
+ info = time.get_clock_info(name)
+
#self.assertIsInstance(info, dict)
self.assertIsInstance(info.implementation, str)
self.assertNotEqual(info.implementation, '')
"""
from turtle import Turtle, mainloop
-from time import clock
+from time import perf_counter as clock
# wrapper for any additional drawing routines
# that need to know about each other
"""
from turtle import Turtle, colormode, tracer, mainloop
from random import randrange
-from time import clock
+from time import perf_counter as clock
def symRandom(n):
return randrange(-n,n+1)
scripts for turtle-graphics.
"""
from turtle import *
-from time import sleep, clock
+from time import sleep, perf_counter as clock
class CurvesTurtle(Pen):
# example derived from
"""
from turtle import *
from math import cos, pi
-from time import clock, sleep
+from time import perf_counter as clock, sleep
f = (5**0.5-1)/2.0 # (sqrt(5)-1)/2 -- golden ratio
d = 2 * cos(3*pi/10)
there are 1024 turtles.
"""
from turtle import Turtle, mainloop
-from time import clock
+from time import perf_counter as clock
def tree(plist, l, a, f):
""" plist is list of pens
Followed by a complete undo().
"""
from turtle import Screen, Turtle, mainloop
-from time import clock, sleep
+from time import perf_counter as clock, sleep
def mn_eck(p, ne,sz):
turtlelist = [p]
--- /dev/null
+time.clock() and time.get_clock_info('clock') now emit a DeprecationWarning
+warning.
static PyObject*
pyclock(_Py_clock_info_t *info)
{
+ if (PyErr_WarnEx(PyExc_DeprecationWarning,
+ "time.clock has been deprecated in Python 3.3 and will "
+ "be removed from Python 3.8: "
+ "use time.perf_counter or time.process_time "
+ "instead", 1) < 0) {
+ return NULL;
+ }
#ifdef MS_WINDOWS
return perf_counter(info);
#else