Python Multithread Memoization, ist es möglich? Wenn das so ist, wie?Python Multithread Memoization
Antwort
Sicher ist es möglich. In der Tat denke ich, dass die einfache single-threaded Implementierung gut funktionieren sollte, vorausgesetzt, dass es akzeptabel ist, dass einige redundante Berechnungen in dem Fall ausgeführt werden können, wenn die gleiche Funktion mit den gleichen Parametern parallel aufgerufen wird.
Eine Abbildung des Szenarios wird Ihr memoization Verfahren wahrscheinlich so etwas wie folgt aussehen:
if args not in cache:
cache[args] = func(args)
return cache[args]
Wenn zwei Threads zur gleichen Zeit mit der gleichen args
diesen Punkt getroffen, können sie beide func(args)
parallel aufrufen , während es effizienter wäre, nur eine Instanz der Berechnung aufzurufen und die andere zu warten, bis die erste abgeschlossen ist. Das ist vielleicht kein großes Problem für Sie. Wenn dies der Fall ist, sollte eine Lösung, die Sperren (aus dem threading
-Modul) verwendet, um Threads mit passenden Argumenten zu blockieren, ziemlich einfach sein.
@gnibbler: Ich habe nichts versucht. Ich kam mit einem Freund ins Gespräch, der Memoization verwendete, um einige große KI-Berechnungen zu beschleunigen, fand aber, dass einige seiner Eingaben noch lange Zeit benötigen, um auf seinem Computer zu rechnen. Da es sich um einen Multicore-Computer handelt, schlug ich vor, dass er seine Anwendung multithreading-tauglich machen sollte und er war sich nicht sicher, ob er es schaffen würde, ohne seine Memo-Einträge zu verpfuschen. Aus Neugierde habe ich mich also entschieden, die Experten hier zu fragen, ob das überhaupt möglich sei. Scheint so, als ob ... die Leute in dieser Gemeinschaft mich immer wieder mit ihren Lösungen überraschen. :) – user578086
- 1. Webscrape multithread python 3
- 2. Multithread-Webserver in Python
- 3. Multithread-Python-Anfragen
- 4. Multithread in Python 2.7?
- 5. Pandas Memoization
- 6. Memoization Handler
- 7. Memoization mit Primzahlengenerator
- 8. Ein guter Multithread-Python-Webserver?
- 9. Ausführungszeit von Multithread-Python-Programm
- 10. Wie Multithread-Funktionen in Python?
- 11. Minimax-Algorithmus mit Memoization?
- 12. General Memoization in Schema
- 13. Einbetten von Python in Multithread-C-Anwendung
- 14. Python: Format Multithread-Zeichenfolgen mit Variablen
- 15. Wie behandelt Apache Spark Python Multithread-Probleme?
- 16. Bessere Multithread-Nutzung von Python subprocess.Popen & communicate()?
- 17. Python Multithread-Multi-Interpreter C API
- 18. Funktionale Sprachen & Unterstützung für Memoization
- 19. Dynamische Programmierung/Memoization (Triplets zählen)
- 20. Dynamische Programmierung Memoization in Haskell
- 21. Maximum Profit- memoization, DP, Optimalitäts
- 22. Einfaches Beispiel für Erlang memoization
- 23. Multithread Debugging mit PyCharm
- 24. Java Multithread
- 25. PHP Multithread
- 26. Multithread-Jobwarteschlangenmanager
- 27. iphone, Multithread
- 28. Multithread JDBC
- 29. Multithread-Suche
- 30. Zeit zum Leben Memoization in F #
Ja, es ist möglich. Was hast du bisher versucht? –
Ja, es ist möglich, könnte Sperren und Warteschlangen umfassen, Suche nach Cache wird helfen. – TryPyPy