Make sure processes terminate when main process exit. Args: proc (multiprocessing.Process or list)
(proc)
| 145 | |
| 146 | |
| 147 | def ensure_proc_terminate(proc): |
| 148 | """ |
| 149 | Make sure processes terminate when main process exit. |
| 150 | |
| 151 | Args: |
| 152 | proc (multiprocessing.Process or list) |
| 153 | """ |
| 154 | if isinstance(proc, list): |
| 155 | for p in proc: |
| 156 | ensure_proc_terminate(p) |
| 157 | return |
| 158 | |
| 159 | def stop_proc_by_weak_ref(ref): |
| 160 | proc = ref() |
| 161 | if proc is None: |
| 162 | return |
| 163 | if not proc.is_alive(): |
| 164 | return |
| 165 | proc.terminate() |
| 166 | proc.join() |
| 167 | |
| 168 | assert isinstance(proc, mp.Process) |
| 169 | atexit.register(stop_proc_by_weak_ref, weakref.ref(proc)) |
| 170 | |
| 171 | |
| 172 | def enable_death_signal(_warn=True): |
no test coverage detected