#!/usr/bin/env python # coding: utf-8 # ## For SO https://stackoverflow.com/a/78454777/8508004 # # Formatting time / timeout magic results # # Note that example post assumed time came out in milliseconds; however, that isn't necessarily the case, for example try `for x in range(10_000_000)` with example code. This implemantation only changes if in micro- or milliseconds per the original post. # In[1]: get_ipython().run_cell_magic('capture', 'original_output', '%%timeit -o\nfor x in range(100):\n x**2\n') # In[2]: if original_output.stdout.split()[1] == 'us': print(f'{(float(original_output.stdout.split()[0])/1000000.0):.8f} s') elif original_output.stdout.split()[1] == 'ms': print(f'{(float(original_output.stdout.split()[0])/1000.0):.3f} s') else: print(f'{original_output.stdout.split("+-",1)[0].strip()}') # In[3]: get_ipython().run_cell_magic('capture', 'original_output', '%%timeit -o\nfor x in range(1_000_000):\n x**2\n') # In[4]: if original_output.stdout.split()[1] == 'us': print(f'{(float(original_output.stdout.split()[0])/1000000.0):.8f} s') elif original_output.stdout.split()[1] == 'ms': print(f'{(float(original_output.stdout.split()[0])/1000.0):.3f} s') else: print(f'{original_output.stdout.split("+-",1)[0].strip()}') # In[5]: get_ipython().run_cell_magic('capture', 'original_output', '%%timeit -o\nfor x in range(10_000_000):\n x**2\n') # In[6]: if original_output.stdout.split()[1] == 'us': print(f'{(float(original_output.stdout.split()[0])/1000000.0):.8f} s') elif original_output.stdout.split()[1] == 'ms': print(f'{(float(original_output.stdout.split()[0])/1000.0):.3f} s') else: print(f'{original_output.stdout.split("+-",1)[0].strip()}') # -------- # # # -------- # # #### Tests/development are below # In[ ]: get_ipython().run_cell_magic('capture', 'original_output', '%%timeit -o\nfor x in range(1_000_000):\n x**2\n') # In[ ]: def function(): for x in range(1_000_000): x**2 variable = get_ipython().run_line_magic('timeit', '-o function()') print(variable) print(type(variable)) print(f'{variable.average:.3} s') # In[ ]: #print(f'{_.average:.3} s') print(f'original output: {original_output}') # In[ ]: get_ipython().run_cell_magic('timeit', '-o', 'for x in range(10_000_000):\n x**2\n') # In[ ]: get_ipython().run_cell_magic('timeit', '-o', 'for x in range(1_000_000):\n x**2\n') # In[ ]: type(_) # In[ ]: _ # In[ ]: print(f'{_.average} s') # In[ ]: print(f'{_.average:.3} s') # In[ ]: print(f'{_.average:.03f} s') # In[ ]: get_ipython().run_cell_magic('capture', 'original_output', '%%timeit -o\nfor x in range(1_000_000):\n x**2\n') # In[ ]: original_output.stdout # In[ ]: get_ipython().run_cell_magic('capture', 'out_stream', '%%time\nfor x in range(1_000_000):\n x**2\n') # In[ ]: out_stream.stdout # In[ ]: for x in out_stream.stdout.split("\n")[-3:]: print(x) # In[ ]: out_stream.stdout.split("\n")[-3:] # In[ ]: get_ipython().run_cell_magic('capture', 'original_output', '%%timeit -o\nfor x in range(1_000_000):\n x**2\n') # In[ ]: get_ipython().run_cell_magic('capture', 'original_output', '%%timeit -o\nfor x in range(10):\n x**2\n') # In[ ]: original_output.stdout # In[ ]: if original_output.stdout.split()[1] == 'us': print(f'{(float(original_output.stdout.split()[0])/1000000.0):.8f} s') elif original_output.stdout.split()[1] == 'ms': print(f'{(float(original_output.stdout.split()[0])/1000.0):.3f} s') else: print(f'{original_output.stdout.split("+-",1)[0].strip()}') # In[ ]: original_output.stdout # In[ ]: f'{int(original_output.stdout.split()[0])}' # In[ ]: original_output.stdout # In[ ]: original_output.stdout[1] == 'us' # In[ ]: original_output.stdout.split() # In[ ]: original_output.stdout.split("+-",1)[0].strip() # In[ ]: get_ipython().run_cell_magic('capture', 'original_output', '%%timeit -o\nfor x in range(10):\n x**2\n') # In[ ]: original_output.stdout.split("+-",1)[0].strip() # In[ ]: