Ich habe die Dokumentation über neue Prozesse von einer Aufgabe auf einem Arbeiter ausgeführt. Ich kam in diesem von here:Sezieren von Aufgaben aus Thread-Pools in dask verteilt
jedoch jede ausgeführte Aufgabe einen einzigen Thread in Anspruch nimmt, und so, wenn Sie viele Aufgaben starten, die anderen Aufgaben starten, dann ist es möglich, das System in einer Sackgasse, wenn Sie nicht vorsichtig sind. Sie können innerhalb einer Aufgabe aus der secede Funktion aufrufen, um es sich von dem dedizierten Thread-Pool in einem Verwaltungs Faden entfernen, die nicht mit einem Schlitz in der Dask Arbeiter
Was bedeutet es, ein Verwaltungs bedeuten dauert bis zu bewegen Faden? Sind alle Steckplätze gleich oder ähnlich? Und der administrative Thread hat Priorität?
Als ein konkretes Beispiel, hier ist das, was von Ich denke versuchen:
from dask.distributed import get_client, secede
def compute_square(x):
# Get locally created client
client = get_client()
secede() # or not?
if x > 5:
client.submit(lambda x : x**2, x)
wo compute_square
und die lambda
Funktion möglicherweise schon ein paar Mal durchgeführt werden konnte und eine rechenintensive Funktion lohnen würde der Aufwand von 1 ms beim Senden von Jobs. Sollte ich in diesem Fall secede
verwenden?