Ich Unterklasse der Klasse Process, in einer Klasse, die ich EdgeRenderer aufrufen. Ich möchte multiprocessing.Pool
verwenden, außer dass ich anstelle von regulären Prozessen Instanzen meines EdgeRenderer sein möchte. Möglich? Wie?Python Multiprocessing: Pool von benutzerdefinierten Prozessen
Antwort
Von Jesse Noller:
Es ist derzeit nicht in der API unterstützt, aber wäre nicht schlecht Zusatz. Ich werde schauen sie python2.7 auf das Hinzufügen/2.6.3 3.1 in dieser Woche
Ich sehe keinen Haken dafür in der API. Sie können möglicherweise mit der Replikation Ihrer gewünschten Funktionalität durch Verwendung initializer
und initargs
Argument entkommen. Alternativ können Sie die Funktionalität in das aufrufbare Objekt erstellen, die Sie für die Zuordnung verwenden:
class EdgeRenderTask(object):
def op1(self,*args):
...
def op2(self,*args):
...
p = Pool(processes = 10)
e = EdgeRenderTask()
p.apply_async(e.op1,arg_list)
p.map(e.op2,arg_list)
Sie können keine Klasse als Argument an 'p.map' übergeben, Sie erhalten einen Pickle-Fehler. Der einzige Weg, den ich gefunden habe, ist eine Art benutzerdefinierte 'pool.map' zu implementieren .... die Prozesse selbst einzurichten und zu füttern. Leider werden mehr Zeilen benötigt. – catwalker333
Dies scheint zu funktionieren:
import multiprocessing as mp
ctx = mp.get_context() # get the default context
class MyProcess(ctx.Process):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
print("Hi, I'm custom a process")
ctx.Process = MyProcess # override the context's Process
def worker(x):
print(x**2)
p = ctx.Pool(4)
nums = range(10)
p.map(worker, nums)
- 1. Python Multiprocessing Pool vs Multiprocessing ThreadPool
- 2. Python Multiprocessing: Fortschrittsbericht von Prozessen
- 3. Python Multiprocessing führt zu vielen Zombie-Prozessen
- 4. Python Multiprocessing Pool mit map_async
- 5. Python Multiprocessing-Pool hängt auf Ubuntu-Server
- 6. Gemeinsamer Pool Karte zwischen Prozessen mit objektorientierten Python
- 7. Verwendung von initialisieren in Python Multiprocessing-Worker-Pool
- 8. Kommunikation zwischen Python-Prozessen
- 9. Multiprocessing in Python - sicherstellen, dass eine minimale Anzahl von untergeordneten Prozessen aktiv ist
- 10. python singleton in multiprocessing
- 11. Globals Variablen und Python Multiprocessing
- 12. Prozess kann nicht in Python Multiprocessing-Pool stoppen
- 13. Python Multiprocessing-Pool auf Windows 8.1 laicht nur ein Arbeiter
- 14. Python-Multiprocessing-Prozess vs. Standalone Python VM
- 15. Python Watchdog spawn multiprocessing
- 16. python multiprocessing mit maxtasksperchild
- 17. Freigabe von Daten zwischen Prozessen in Python
- 18. Python itertools multiprocessing
- 19. Multiprocessing Pool Beispiel (parallel) ist langsamer als sequenziell. Versuchen, Pool in Python zu verstehen
- 20. Python Multiprocessing Imap Chunksize
- 21. Verwendung von apply_async mit Callback-Funktion für einen Pool von Prozessen
- 22. Python Pool funktioniert nicht
- 23. Profiling eines Python-Multiprocessing-Pools
- 24. Python Multiprocessing + Subprozess Probleme
- 25. Python Multiprocessing & Pathos: Importfehler
- 26. Finding Ausnahme in Python Multiprocessing
- 27. Python: Verwenden von sqlite3 mit Multiprocessing
- 28. Python Multiprocessing und ein gemeinsamer Zähler
- 29. Python-Debug-Tools für Multiprocessing
- 30. Python MultiProcessing
Versuchen Sie, Ihren Code zu schreiben, diese Art und Weise Multi-Threading zu verwenden ? –
Mehrfachverarbeitung. –