回答編集履歴

3

サププロセス起動方式について補足説明を追記。windowsのspawn方式を想定しての説明です。(fork方式には該当しない)

2025/03/09 05:57

投稿

teamikl
teamikl

スコア8815

test CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  DataLoader のworker_init_fn 引数でサブプロセス側の初期化時に関数を呼び出すことができて、
4
4
  そのなかで signalハンドラの設定が可能です。
5
+
6
+ (条件・追記: Windows のように、サブプロセスが spawn 方式の起動であれば)
5
7
  モジュールのトップレベルで呼び出すことでサブプロセス側のシグナルも設定できます。
6
8
 
7
9
  マルチプロセスで稼働させる場合、マルチプロセスのガイドラインに沿ったコードでないと

2

誤字修正 小プロセス→子プロセス(サブプロセス)

2025/03/08 06:08

投稿

teamikl
teamikl

スコア8815

test CHANGED
@@ -40,7 +40,7 @@
40
40
  try:
41
41
  ...
42
42
  for w in self._workers:
43
- w.join(timeout=...) # プロセスの完了を待つ、長引く場合はタイムアウト
43
+ w.join(timeout=...) # プロセスの完了を待つ、長引く場合はタイムアウト
44
44
  ...
45
45
  finally:
46
46
  ...

1

num_workers のマルチプロセスを使わない設定について訂正 1 -> 0

2025/03/08 06:07

投稿

teamikl
teamikl

スコア8815

test CHANGED
@@ -73,7 +73,7 @@
73
73
  ----
74
74
  解決策・選択肢として提案できるのは、回答として期待するエラー自体の解決にならないかもしれないけど
75
75
  - wsl / docker 上の posix 準拠環境で実行する
76
- - windows 環境下では num_workers=1 で利用する
76
+ - windows 環境下では num_workers=0 で利用する
77
77
 
78
78
  プリーズ状態を回避するだけであれば、SIGINT の無視はせずに、
79
79
  シグナルハンドラ内で 終了 sys.exit するなど。