I'm using a print statement in a python 2.7 script in which I'm creating instances of data modeling classes. They're fairly large classes which do a good number of calculations in property setters during the init, so it's not the fastest executing script. I use print statements to have some idea of progress, but what's interesting is how they're executing. The code looks something like this:
    from __future__ import absolute_import, division, print_function, unicode_literals
    print('Loading data...', end='\t')
    data = LoadData(data_path)
    first_model = FirstModel(parameters).fit(data)
    print('Done.\nFitting second model...', end='\t')
    # prints 'Done.' and then there's a very long pause...
    # suddenly 'Fitting second model...' prints and the next model initializes almost immediately
   second_model = SecondModel(parameters).fit(data)
   results = second_model.forecast(future_dates)
Why would the statement print('Done.\nFitting second model...', end=\t') first print 'Done.' and then pause for a long period of time? There was one instance when I was running this code, and after the 'Done.' printed I got an error before the rest of the statement printed. The error returned was an error in SecondModel where I tried too access a method as an attribute. What's going on here? How or why is python executing this print statement in such a counterintuitive way? It's as if the interpreter views the new line character as an indication that it should start looking at later parts of the code.
 
    