私は新しいサブディレクトリのディレクトリを監視し、ループ内の各サブディレクトリに対して動作するPythonスクリプトを作成しました。これらのサブディレクトリを作成する外部プロセスがあります。各サブディレクトリの中には、テキストファイルと多数のイメージがあります。各画像のテキストファイルには1つのレコード(行)があります。私のスクリプトは、テキストファイルをスキャンし、いくつかの外部プログラムを呼び出し、1つは空のイメージ(カスタムexe)を検出し、次にイメージをサイズ変更して変換する "mogrify"の呼び出しと最後に7への呼び出しを行います-zip変換されたイメージとテキストファイルをすべて1つのアーカイブに貼り付けます。Windowsでのバルクファイル/変換操作のためのPythonマルチ処理
スクリプトは正常に動作しますが、現在は順次実行されています。各サブディレクトリを一度に1つずつループします。これはデュアルCPUマシン(合計8コア)で実行されているので、これはいくつかのマルチプロセッシングを行う良い機会になると私には思われます。
特定のサブディレクトリの処理は、他の処理とは無関係です。これらは独立して処理されています。
現在、私はos.listdir()の呼び出しを使用してサブディレクトリのリストを作成し、そのリストをループしています。私は、サブディレクトリごとのコード(コンバージョンなど)をすべて別の関数に移動して、それぞれのサブディレクトリを処理する別々のプロセスを作成することができると考えています。私はPythonに少し新しかったので、そのようなマルチプロセッシングにアプローチする方法についてのいくつかの提案が評価されるでしょう。私はPython 2.6を実行しているVista x64を使用しています。
お薦めいただきありがとうございます。プロセスは独立しています。他の唯一の問題はロギングです。私は処理のエラーを報告するためにファイルハンドラにログを書きます。マルチプロセスロギングが複雑になっているようです。 私が3.0に移行する際に見る唯一の問題は、MS SQL Serverに接続するためにpyodbcを使用していることです。このモジュールは、現在最大2.6までしかサポートしていません。 –
ロギングに関して、非常に基本的な解決策は、プロセスごとに別々のロギングを行い、次にログを併合することです。あなたはsqlserverに言及して以来、データベースを使用することができますが、それはむしろ自然である可能性があります(アイデアを素早く試すためにはsqliteがあります)。 – Francesco
ログにSQLiteを使用することの提案に+1してください。 – Imagist