You already know the problem: Some sections in your Python script run fast, but others (like importing dependencies) take a few seconds. If you’re only half as impacient as me, you don’t want to sit in front of a black console, wondering if your script got stuck.
Usually you would put a print(“…”) before each section:
#=================== import dependencies
print("importing dependencies")
import numpy
import matplotlib
...
But obviously this brings redundancy and is a lot of extra typing.
Instead of all these prints, we define a function printprev():
def printprev(n=1):
import linecache, inspect
for l in range(-n, 0):
print(linecache.getline(__file__,inspect.currentframe().f_back.f_lineno+l).strip())
Calling this function prints your code structure, and even the code itself to the output:
#=================== import dependencies
printprev()
import numpy
import matplotlib
#=================== define variables
m = 100
n = 100000
numbers = numpy.zeros(m)
#=================== running calculations
for i in range(n):
numbers[numpy.random.randint(0,m)]+=1
printprev(3)
#=================== reporting the results
printprev()
print(numbers)

That’s it. Let me know if you have some interesting ideas what to do with this!
cheers