가능한 중복 :
what exactly the python’s file.flush() is doing?부작용
나는 flush 메소드를 호출하면 추가 시간에지도하는 많은 IO 작업 비용 것을 찾을 수 있습니다.
내 스크립트에서 플러시를 제거하면 파일이 즉시 업데이트되지 않는다는 것을 알고 있습니다.
그래서 필자 만 글을 쓰고 있지만 파일을 읽지 않는지 궁금합니다. 스크립트에서 플러시를 제거하는 다른 부작용이 있습니까?
가능한 중복 :
what exactly the python’s file.flush() is doing?부작용
나는 flush 메소드를 호출하면 추가 시간에지도하는 많은 IO 작업 비용 것을 찾을 수 있습니다.
내 스크립트에서 플러시를 제거하면 파일이 즉시 업데이트되지 않는다는 것을 알고 있습니다.
그래서 필자 만 글을 쓰고 있지만 파일을 읽지 않는지 궁금합니다. 스크립트에서 플러시를 제거하는 다른 부작용이 있습니까?
부작용? 나는 당신이 의미하는 바를 정확히 이해하지는 못하지만, 어쨌든 전에 그것에 대해 이야기하도록하겠습니다.
파일 작업의 경우, 달리 구성하지 않으면 Python은 운영 체제의 기본 버퍼링을 사용합니다. 버퍼 크기 (버퍼되지 않음) 또는 버퍼 된 행을 지정할 수 있습니다. 따라서 항상 flush
을 계속 사용하고 있다면 일정한 IO가 진행됩니다. 많은 양의 데이터 (예 : 버퍼가 클 경우)를 플러시하면 IO를 기다리는 다른 실행중인 프로그램이 느려질 수 있습니다.
하드 디스크의 수명이 짧고 빈번한 IO 작업이 좋지 않은 경우 디스크 충돌이 증가합니다.
일반적으로 내가 수행하는 패턴은 파일 객체에 대한 모든 쓰기가 완료된 후 파일을 닫기 전에 끝나면 완료됩니다.
당신이 생각하기에, 당신이 쓰는 것과 같은 파일에서 다른 스레드 나 프로그램을 읽는 것이 있습니까? 이 경우 문제가 생길 수 있습니다! 손상된 파일은 여기에 있습니다. 파일을 영구 데이터 저장소로 사용하려는 경우 그렇다면 그것을하는 잘못된 길. 왜 파일을 데이터 저장소로 사용하는 대신 persistent-DB (mysql 또는 심지어 sqlite와 같은)를 사용하지 않을까요?
[이 질문에 대한 답변] (http://stackoverflow.com/questions/7127075/what-exactly-the-pythons-file-flush-is-doing)에서 플러시 효과에 대해 읽어보십시오. 프로그램에서 필요하지 않으면 flush를 사용하지 마십시오. –