1
def create_file_numbers_old(filename, size):
start = time.clock()
value = 0
with open(filename, "w") as f:
while f.tell()< size:
f.write((str(value))+'\n')
value += 1
end = time.clock()
print "time taken to write a file of size", size, " is ", (end -start), "seconds \n"
이것은 최적화해야하는 기능입니다! 누군가 제가 약 3-4 초 안에 그것을 도울 수 있습니까?cProfile을 사용하여 파이를 최적화하는 Python
def main(argv = sys.argv):
#add argument checking and parsing here ..
fpath = output_path(r"est.txt")
size=50*1024*1024 #write a 50M file
cProfile.run("create_file_numbers_old('%s', %d)" %(fpath, size))
fpath1 = output_path(r"est1.txt")
cProfile.run("create_file_numbers_new('%s', %d)" %(fpath1, size))
if __name__ == "__main__":
main()
실제로 I/O에 대해 많이 최적화 할 수는 없지만, 50MB를 쓰는 데 얼마나 오래 걸릴지에 달려있다. 그러나'write()'호출 횟수를 줄이는 것이 좋습니다. 한 번에 둘 이상의 값을 작성한 다음 한도를 초과 할 때이를 자릅니다. 8 바이트 단위로 50MB의 더미 데이터를 쓰는 데 걸리는 시간을 비교하고 전체 문자열을 한 번에 쓰면 작동 여부를 테스트 할 수 있습니다. ('write()'만 타이밍을 둠으로써) – millimoose
또한 들여 쓰기가 명확하게 깨져 있기 때문에 코드 샘플을 확인해야합니다. 미리보기 기능은 친구입니다. 마지막으로 "3 ~ 4 초 내에"다른 사람에게 유용하지 않습니다. 코드가 IO 바운드 인 경우 (가능성이 높음) SSD를 가진 사람이라면 이미 더 빨리 실행될 것입니다. – millimoose
메모리에 버퍼를 생성 한 다음 모든 것을 한 번에 쓸 수는 있지만 이미 어느 정도 버퍼링 될 것입니다. 나는 while 루프가 아마도 최적화 될 수 있다고 생각한다. –