Ich habe eine Methode, die Kwargs und Zukunft abruft. Ich würde gerne ein Wörterbuch von Kwarts in Zukunft speichern für die spätere Verarbeitung von Ergebnissen mit Kwargs.Verwenden Sie Kwargs als Schlüssel im Wörterbuch
class ThreadPoolExecutorImproved(object):
def __init__(self, max_workers):
self._executor = ThreadPoolExecutor(max_workers)
self._futures = {}
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
kwargs_to_exception = {}
for kwargs, future in self._futures.iteritems():
if future.exception():
kwargs_to_exception[kwargs] = future.exception
if kwargs_to_exception:
raise ThreadPoolException(kwargs_to_exception)
def submit(self, fn, *args, **kwargs):
future = self._executor.submit(fn, *args, **kwargs)
key = tuple(kwargs.items())
self._futures[key] = future
return future
Allerdings bekomme ich einen Fehler auf der Linie self.futures[key] = future
:
TypeError: unhashable type: 'dict' for python
warum ist es? Ich habe ein Tupel von Kwargs erstellt!
Es heißt, Sie haben ein ** Wörterbuch ** in einem der ** Werte ** von 'Kwargs'. –
Ich habe es. also würde ich jeden Wert benötigen, um es mit einem Tupel zu umhüllen? – Dejell
können Sie tatsächlich jedes Wörterbuch in ein Tupeläquivalent umwandeln. Beachten Sie, dass Sie dies ** rekursiv durchführen müssen **, da diese Wörterbücher auch Wörterbücher usw. enthalten können. –