[解決済み】Pythonでマルチプロセシングを使用しているとき、どのようにログを取るべきですか?
2022-04-16 22:30:38
質問
現在、フレームワークの中心的なモジュールがあり、Python 2.6を使用して複数のプロセスを生成しています。
multiprocessing
モジュール
. を使用しているため
multiprocessing
モジュールレベルのマルチプロセッシング対応ログがあります。
LOG = multiprocessing.get_logger()
. 1件あたり
ドキュメント
このロガーはプロセス共有のロックを持っています。
sys.stderr
(または任意のファイルハンドル) に複数のプロセスが同時に書き込みを行うことです。
今抱えている問題は、フレームワークの他のモジュールがマルチプロセシングに対応していないことです。私の考えでは、この中心的なモジュールに依存するすべてのモジュールに、マルチプロセシングを考慮したロギングを使用させる必要があります。それは厄介なことです。 内 フレームワークのクライアントはもちろんのこと、フレームワークの全クライアントに対して 私が考えていない代替案があるのでしょうか?
解決方法は?
押し付けがましくない対処法としては
- 各ワーカープロセスは、そのログが 別のファイル記述子 (理想的には、すべてのログエントリはタイムスタンプ付きであるべきです。
-
コントローラプロセスでは、次のようなことができます。
一つ
のいずれかを指定します。
- ディスクファイルを使用する場合。 実行終了時にログファイルを合体させ、タイムスタンプ順に並べます。
-
パイプを使用する場合(推奨)。
すべてのパイプからその場でログを収集し、中央のログファイルに保存します。(例) 定期的に
select
をパイプのファイル記述子から取得し、利用可能なログエントリに対してマージソートを実行し、集中ログにフラッシュします。を繰り返す)。
関連
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] svn log -v' のように 'git log' にファイル名を表示させる方法
-
[解決済み】ネストされたディレクトリを安全に作成するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python call matlab メソッドの詳細
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
PicgoのイメージベッドツールをPythonで実装する
-
Python カメの描画コマンドとその例
-
PythonはWordの読み書きの変更操作を実装している
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み] マルチプロセシング - パイプとキュー