AttributeError: module time has no attribute clock in Python 3.8
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 PyCrypto
pip3 install -U PyCryptodome
AttributeError: module time has no attribute clock in Python 3.8
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: 0.0382 ---------------------------> 0.0384 # Windows: 26.1224 ---------------------------> 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()
-