2012-12-12 4 views
1

가능한 중복 :
what exactly the python’s file.flush() is doing?부작용

나는 flush 메소드를 호출하면 추가 시간에지도하는 많은 IO 작업 비용 것을 찾을 수 있습니다.

내 스크립트에서 플러시를 제거하면 파일이 즉시 업데이트되지 않는다는 것을 알고 있습니다.

그래서 필자 만 글을 쓰고 있지만 파일을 읽지 않는지 궁금합니다. 스크립트에서 플러시를 제거하는 다른 부작용이 있습니까?

+0

[이 질문에 대한 답변] (http://stackoverflow.com/questions/7127075/what-exactly-the-pythons-file-flush-is-doing)에서 플러시 효과에 대해 읽어보십시오. 프로그램에서 필요하지 않으면 flush를 사용하지 마십시오. –

답변

0

부작용? 나는 당신이 의미하는 바를 정확히 이해하지는 못하지만, 어쨌든 전에 그것에 대해 이야기하도록하겠습니다.

파일 작업의 경우, 달리 구성하지 않으면 Python은 운영 체제의 기본 버퍼링을 사용합니다. 버퍼 크기 (버퍼되지 않음) 또는 버퍼 된 행을 지정할 수 있습니다. 따라서 항상 flush을 계속 사용하고 있다면 일정한 IO가 진행됩니다. 많은 양의 데이터 (예 : 버퍼가 클 경우)를 플러시하면 IO를 기다리는 다른 실행중인 프로그램이 느려질 수 있습니다.

하드 디스크의 수명이 짧고 빈번한 IO 작업이 좋지 않은 경우 디스크 충돌이 증가합니다.

일반적으로 내가 수행하는 패턴은 파일 객체에 대한 모든 쓰기가 완료된 후 파일을 닫기 전에 끝나면 완료됩니다.

당신이 생각하기에, 당신이 쓰는 것과 같은 파일에서 다른 스레드 나 프로그램을 읽는 것이 있습니까? 이 경우 문제가 생길 수 있습니다! 손상된 파일은 여기에 있습니다. 파일을 영구 데이터 저장소로 사용하려는 경우 그렇다면 그것을하는 잘못된 길. 왜 파일을 데이터 저장소로 사용하는 대신 persistent-DB (mysql 또는 심지어 sqlite와 같은)를 사용하지 않을까요?