2010-08-10 6 views
2

나는 몇 백 개의 파일과 아마도 수천 개의 파일에서 특정 오프셋을 읽었습니다. 특정 시간에 특정 오프셋의 특정 데이터 만 필요하기 때문에 나중에 사용하기 위해 파일 핸들을 열어 두거나 필요한 파일을 별도의 파일에 쓸 수 있어야합니다.여러 파일 포인터를 동시에 열어도 괜찮습니까?

새로운 임시 파일 디스크에 많은 양의 쓰기 작업을하는 대신 이러한 파일 핸들을 모두 열어 두는 것이 두 가지 중 하나입니다. 나는 많은 파일 핸들을 열어 놓는 것의 효율성에 대해 걱정하고있었습니다.

일반적으로 파일을 열고 오프셋을 찾고 일부 데이터를 읽은 다음 5 초 후 동일한 오프셋을 적용하고 다른 오프셋에서 파일을 천천히 2 분 안에 표시합니다.

이것이 문제가 될 수 있습니까?

후속작 : 정말, 더 나은 I "m 묻는 파일이 열린 핸들이 수천을 떠나, 또는 일정을 닫고 나는 즉시 그들에게 필요한 때를 다시 열 수

+0

제목에'[python]'을 쓰지 마십시오. 태그가 그 대상입니다. – Amber

+0

오라클과 같은 데이터베이스가 그렇기 때문에 왜 묻고 있는지 확실하지 않습니다. –

답변

4

일부 시스템을 제한 할 수 있습니다. 단일 프로세스가 동시에 열 수있는 파일 설명자 수 1024가 일반적인 기본값이므로 한 번에 "수천"을 열어야하는 경우 이식성 측면에서 오류를 일으키고 응용 프로그램을 작은 풀을 사용하도록 디자인 할 수 있습니다 열린 파일 설명 자의 유형

+0

그래서 수천 개의 파일을 열어 두는 것이 더 좋습니다. 내가 그들을 닫지 않고 다시 열면 나는 속도 효율을 얻을 수있을 거라 생각했다. – ruffiko

+0

@ruffiko : 특정 애플리케이션에 대해 더 많이 알지 못해도 말하기 어렵습니다. 그것은 당신이 당신의 상황에 가장 잘 작동하는 방식 일 수 있습니다. 그러나 수천 개의 파일을 한 번에 열어두면 나에게 "코드 냄새"가 날 것입니다.이 코드 냄새는 더 자세히 살펴볼 가치가 있습니다. 수천 개의 파일을 반복적으로 열거 나 닫음으로써 얼마나 많은 오버 헤드가 발생했는지를 알 수있는 간단한 벤치 마크 프로그램을 작성하는 것이 좋습니다. 왜 당신이 측정 할 수 있을까요? –

3

Storage.pyBitTorrent에서 살펴볼 것을 권장합니다. 파일 핸들 풀의

관련 문제