Ich schaute in den Multiprocessing.Pool für Arbeiter, versuchen, Arbeiter mit einem Zustand zu initialisieren. Der Pool kann aufrufbar initialisiert werden, es wird jedoch kein Verweis auf den initialisierten Worker übergeben. Die wenigen Beispiele, die ich gesehen habe, verwenden sie als globale Variablen, was wirklich eklig erscheint.Verwendung von initialisieren in Python Multiprocessing-Worker-Pool
Gibt es eine gute Möglichkeit, Arbeiterstatus mit Multiprocessing.Pool zu initialisieren?
Edit: Ein Beispiel:
Ich habe Arbeiter, von denen jeder ein wenig relativ teuer Initialisierung tun (Bindung an eine Steckdose), das will ich nicht jedes Mal zu tun haben. Ich könnte meine Sockets von Hand initialisieren und sie dann weitergeben, wenn ich Arbeit zuweisen würde, aber das Teilen von Dateideskriptoren über Prozesse hinweg ist kompliziert, wenn nicht unmöglich. Ich müsste also jedes Mal initialisieren und binden, wenn ich eine Anfrage bearbeiten wollte.
Ich bin ein wenig unklar, warum Ihre Initialisiererfunktion einen Verweis auf den Arbeiter benötigt, vielleicht könnten Sie ein etwas konkreteres, aber minimales Beispiel dafür liefern, was Sie zu tun versuchen. – mgilson
Sie wissen, dass es keine Möglichkeit gibt zu sagen, * welchem * Arbeiter ein bestimmter Funktionsaufruf zugewiesen wird? Warum also nicht einfach diesen Zustand in die Funktionsargumente aufnehmen? –