Il est bien connu que Jupyter / IPython peut mesurer le temps d'exécution avec % time et% timeit, mais avez-vous déjà voulu traiter ou visualiser cela?
Vous pouvez utiliser %% capture pour traiter la sortie standard comme un objet Python.
Faisons-le réellement.
%%capture result
%timeit 2 ** 100
L'argument de %% capture est le nom de l'objet, voir l'aide pour d'autres options.
%capture [--no-stderr] [--no-stdout] [--no-display] [output]
run the cell, capturing stdout, stderr, and IPython's rich display() calls.
positional arguments:
output The name of the variable in which to store output. This is a utils.io.CapturedIO
object with stdout/err attributes for the text of the captured output.
CapturedOutput also has a show() method for displaying the output, and __call__ as
well, so you can use that to quickly display the output. If unspecified, captured
output is discarded.
Si vous regardez l'attribut stdout, vous pouvez voir que la sortie standard est stockée dans la chaîne.
print(result.stdout)
292 ns +- 4.24 ns per loop (mean +- std. dev. of 7 runs, 1000000 loops each)
Convertissons cette partie 292 ns en secondes afin qu'elle puisse être traitée comme une valeur numérique.
value, unit = result.stdout.split()[:2]
float(value) * {"s": 1, "ms": 1e-3, "us": 1e-6, "ns": 1e-9}[unit]
2.92e-07
Non limité à % timeit, vous pouvez utiliser %% capture pour traiter diverses sorties de Jupyter. Bonne vie à Jupyter!