I'm running a simple file format conversion but on a very large file, from 1Gb file to a 15Gb file. Data is read into a dataframe, some processing is done and the written out to a new format. When this was running in Python 2.7 it took about 45 minutes. Now in Python 3.6 it's taking 10 hours. I don't know why the big difference. Here's a small section of the output code. In total it's writing out 663 lines for each loop and goes through 720,000 loops. I would appreciate any suggestions on improving speed and what make Python 3.6 so slow compared to 2.7.
ASE = open (os.path.join(OutputDir,OutputFileName) ,'w',newline = '\n', buffering=131072)
ASE.write('ScenSet,SetName,ScenName,Scenario Shift Rule,ScenType,ScenValue\n')
for i,row in dfScen.iterrows():
if i[1] != 0:
if i == (1,1):
ASE.write(',{0},{0}_{1},1,\n'.format(Setname,i[0]))
elif i[1] == 1:
ASE.write(',,{0}_{1},1,\n'.format(Setname,i[0]))
'''write assets'''
ASE.write(',,,,,SPTR Index,{0},,@Sliding Axis 2,@Sliding Axis 2,@Standard(),Trigger Time,absolute,Term/Time,0\n'.format(i[1]))
ASE.write(',,,,,,,,,,,,,0,{0:.2f}\n'.format(row['SPTR'] * SPTRLevel))
ASE.write(',,,,,NDX Index,{0},,@Sliding Axis 2,@Sliding Axis 2,@Standard(),Trigger Time,absolute,Term/Time,0\n'.format(i[1]))
ASE.write(',,,,,,,,,,,,,0,{0:.2f}\n'.format(row['NDX'] * NDXLevel))
ASE.write(',,,,,SX5E Index,{0},,@Sliding Axis 2,@Sliding Axis 2,@Standard(),Trigger Time,absolute,Term/Time,0\n'.format(i[1]))
ASE.write(',,,,,,,,,,,,,0,{0:.2f}\n'.format(row['SX5E'] * SX5ELevel))
ASE.write(',,,,,BOND Index,{0},,@Sliding Axis 2,@Sliding Axis 2,@Standard(),Trigger Time,absolute,Term/Time,0\n'.format(i[1]))
ASE.write(',,,,,,,,,,,,,0,{0:.2f}\n'.format(row['BOND'] * BONDLevel))
ASE.write(',,,,,CASH Index,{0},,@Sliding Axis 2,@Sliding Axis 2,@Standard(),Trigger Time,absolute,Term/Time,0\n'.format(i[1]))
ASE.write(',,,,,,,,,,,,,0,{0:.2f}\n'.format(row['CASH'] * CASHLevel))
ASE.write(',,,,,SPX Index,{0},,@Sliding Axis 2,@Sliding Axis 2,@Standard(),Trigger Time,absolute,Term/Time,0\n'.format(i[1]))
ASE.write(',,,,,,,,,,,,,0,{0:.2f}\n'.format(row['SPTR'] * SPXLevel))
ASE.write(',,,,,VolCurveShock SPTR,{0},,@Constant,@Constant,@Standard(),Trigger Time,non-parallel shift,Moneyness/Option Term,1826,3653\n'.format(i[1]))
ASE.write(',,,,,,,,,,,,,1,{0:.7f},{1:.7f}\n'.format(row['ImpliedVolatility,5'],row['ImpliedVolatility,10']))