ඔබ බොහෝ දත්ත හා වේගය ලියන්නේ නම් ඔබ සැලකිලිමත් විය යුතුය f.write(...). මම ඉක්මන් වේග සංසන්දනයක් කළ අතර එය print(..., file=f)විශාල සංඛ්යාවක් ලිවීමට වඩා සැලකිය යුතු වේගයකින් සිදු විය.
import time
start = start = time.time()
with open("test.txt", 'w') as f:
for i in range(10000000):
# print('This is a speed test', file=f)
# f.write('This is a speed test\n')
end = time.time()
print(end - start)
සාමාන්යයෙන් writeමගේ යන්ත්රයේ තත්පර 2.45 කින් නිම කර ඇතprint 4 ගුණයක් (තත්පර 9.76) පමණ ගත විය. එසේ පැවසුවහොත්, බොහෝ තාත්වික තත්වයන් තුළ මෙය ගැටළුවක් නොවනු ඇත.
ඔබ සමඟ යාමට තෝරා ගන්නේ නම්, print(..., file=f)වරින් වර නව රේඛාව යටපත් කිරීමට ඔබට අවශ්ය වනු ඇත, නැතහොත් එය වෙනත් දෙයක් සමඟ ප්රතිස්ථාපනය කරන්න. විකල්ප endපරාමිතිය සැකසීමෙන් මෙය කළ හැකිය , උදා;
with open("test", 'w') as f:
print('Foo1,', file=f, end='')
print('Foo2,', file=f, end='')
print('Foo3', file=f)
ඔබ තෝරාගන්නා ඕනෑම ආකාරයකින් withකේතය කියවීමට පහසු වන බැවින් භාවිතා කිරීමට මම යෝජනා කරමි .
යාවත්කාලීන කිරීම : කාර්ය සාධනයේ මෙම වෙනස පැහැදිලි කරනුයේ writeඉහළ බෆරයකින් යුක්ත වන අතර ඕනෑම තැටියක් ලිවීමට පෙර නැවත පැමිණේ ( මෙම පිළිතුර බලන්න ), නමුත් print(බොහෝ විට) රේඛීය බෆරින් භාවිතා කරයි. මේ සඳහා සරල පරීක්ෂණයක් වනුයේ දිගු ලිවීම් සඳහා කාර්ය සාධනය පරීක්ෂා කිරීමයි, එහිදී රේඛීය බෆරින් සඳහා අවාසි (වේගය අනුව) අඩු ලෙස ප්රකාශ වේ.
start = start = time.time()
long_line = 'This is a speed test' * 100
with open("test.txt", 'w') as f:
for i in range(1000000):
# print(long_line, file=f)
# f.write(long_line + '\n')
end = time.time()
print(end - start, "s")
කාර්ය සාධන වෙනස දැන් වඩා අඩුවෙන් උච්චාරණය වන අතර සාමාන්ය කාලය සඳහා 2.20s writeසහ 3.10s වේ print. මෙම ලූං රේඛා කාර්ය සාධනය ලබා ගැනීම සඳහා ඔබට නූල් පොකුරක් සංයුක්ත කිරීමට අවශ්ය නම්, printවඩාත් කාර්යක්ෂම වන භාවිත අවස්ථා ටිකක් දුර්ලභ ය.