AttributeError: module 'time' has no attribute 'clock' in Python 3.8
From the Python 3.8 doc:
The function
time.clock()
has been removed, after having been deprecated since Python 3.3: usetime.perf_counter()
ortime.process_time()
instead, depending on your requirements, to have well-defined behavior. (Contributed by Matthias Bussonnier in bpo-36895.)
Check if you are using PyCrypto, if yes, uninstall it and install PyCryptodome which is a fork of PyCrypto
PyCrypto is dead as mentioned on project issue page
Since both these libraries can coexist, it could be an issue too
pip3 uninstall PyCryptopip3 install -U PyCryptodome
time.clock()
was removed in 3.8 because it had platform-dependent behavior:
On Unix, this returns the current processor time (in seconds)
On Windows, this returns wall-clock time (in seconds)
# I ran this test on my dual-boot system as demonstration:print(time.clock()); time.sleep(10); print(time.clock())# Linux: # Windows:# 0.0382 # 26.1224# 0.0384 # 36.1566
So which function to pick instead?
Processor Time: This is how long this specific process spends actively being executed on the CPU. Sleep, waiting for a web request, or time when only other processes are executed will not contribute to this.
- Use
time.process_time()
- Use
Wall-Clock Time: This refers to how much time has passed "on a clock hanging on the wall", i.e. outside real time.
Use
time.perf_counter()
time.time()
also measures wall-clock time but can be reset, so you could go back in timetime.monotonic()
cannot be reset (monotonic = only goes forward) but has lower precision thantime.perf_counter()