Wie gehe ich mit dem Initialisierer -Fehler in multiprocessing.pool um?Python

Python-Programme
Anonymous
 Wie gehe ich mit dem Initialisierer -Fehler in multiprocessing.pool um?

Post by Anonymous »

Wenn der Initializer -Fehler wie unten sterben, wird das Skript nicht gestoppt.

Code: Select all

from multiprocessing import Pool
import contextlib

def initializer():
raise Exception("init failed")

def do_something(args):
# main process
pass

pool = Pool(1, initializer=initializer)
with contextlib.closing(pool):
try:
pool.map_async(do_something, [1]).get(100)
except:
pool.terminate()
< /code>

Die nie anhaltende Stacktrace auf der Konsole ist unter < /p>

...
Exception: init failed
Process ForkPoolWorker-18:
Traceback (most recent call last):
File "/home/hoge/anaconda3/lib/python3.6/multiprocessing/process.py", line 249, in _bootstrap
self.run()
File "/home/hoge/anaconda3/lib/python3.6/multiprocessing/process.py", line 93, in run
self._target(*self._args, **self._kwargs)
File "/home/hoge/anaconda3/lib/python3.6/multiprocessing/pool.py", line 103, in worker
initializer(*initargs)
File "hoge.py", line 5, in initializer
raise Exception("init failed")
Exception: init failed
...
< /code>

Mein Problemumgehung unterdrückt den Initialisiererfehler und kehrt am Anfang des Hauptprozesses zurück, indem ich globales Flag wie unten verwendet.def initializer():
try:
raise Exception("init failed")
except:
global failed
failed = True

def do_something(args):
global failed
if failed:
# skip when initializer failed
return
# main process

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post