나는 새로운 서브 디렉토리를위한 디렉토리를 감시하고 루프의 각 서브 디렉토리에서 작동하는 파이썬 스크립트를 작성했습니다. 이러한 하위 디렉토리를 만드는 외부 프로세스가 있습니다. 각 하위 디렉토리에는 텍스트 파일과 여러 이미지가 있습니다. 각 이미지의 텍스트 파일에는 하나의 레코드 (줄)가 있습니다. 각 하위 디렉토리에 대해 내 스크립트는 텍스트 파일을 스캔 한 다음 몇 개의 외부 프로그램을 호출하고 빈 이미지 (사용자 정의 exe)를 감지 한 다음 이미지를 크기를 변경하고 마지막으로 7을 호출하는 "mogrify"(ImageMagick의 일부) 호출을 감지합니다 -zip 변환 된 모든 이미지와 텍스트 파일을 하나의 아카이브로 압축합니다.Windows에서 일괄 파일/변환 작업을위한 파이썬 다중 처리
스크립트는 정상적으로 실행되지만 현재 순차적입니다. 각 하위 디렉토리를 한 번에 하나씩 반복합니다. 듀얼 CPU 머신 (총 8 코어)에서 실행되기 때문에 멀티 프로세싱을 할 수있는 좋은 기회라고 생각됩니다.
주어진 하위 디렉토리의 처리는 다른 모든 항목과 독립적입니다 ... 자체 포함되어 있습니다.
현재 os.listdir() 호출을 사용하여 하위 목록을 만든 다음 해당 목록을 반복합니다. 하위 디렉토리 코드 (변환 등)를 모두 별도의 함수로 옮기고 각 하위 디렉토리를 처리하는 별도의 프로세스를 만들 수 있다고 생각했습니다. 필자는 파이썬에 대해 약간 새로운 점이있어 그러한 멀티 프로세싱에 접근하는 방법에 대한 몇 가지 제안은 인정 될 것입니다. 나는 Vista x64에서 Python 2.6을 사용하고 있습니다.
감사합니다. 프로세스는 독립적입니다. 유일한 다른 문제는 로깅입니다. 처리 중 오류를보고하기 위해 파일 핸들러에 로그를 쓰고 있습니다. 다중 처리 로깅이 복잡 해지는 것 같습니다! 3.0으로 이동하면서 볼 수있는 유일한 문제점은 MS SQL Server에 연결하기 위해 pyodbc를 사용해야한다는 것입니다. 이 모듈은 현재 최대 2.6까지만 지원합니다. –
로깅과 관련하여 매우 기본적인 해결책은 각 프로세스에 대해 별도의 로깅을 수행 한 다음 로그를 병합하는 것입니다. 당신이 sqlserver에 대해 언급했기 때문에 db를 사용하는 것이 좋을 것입니다. sqlite가 마음에 들었을 때의 빠른 테스트를 위해 자연 스럽습니다. – Francesco
로깅을 위해 SQLite를 사용하라는 제안에 +1. – Imagist