Próbuję użyć pakietu multiprocessing
dla Python
. Przeglądając samouczki, najwyraźniejszą i najprostszą techniką wydaje się być użycie pool.map
, która pozwala użytkownikowi łatwo nazwać liczbę procesów i przekazać pool.map
funkcję i listę wartości dla tej funkcji do dystrybucji w procesorach. Inną techniką, którą spotkałem jest using queues do zarządzania pulą pracowników. To answer wykonuje doskonałą pracę wyjaśniając różnicę między pool.map
, pool.apply
i pool.apply_async
, ale jakie są zalety i wady korzystania z pool.map
w porównaniu do korzystania z kolejek, takich jak w tym example?Python Multiprocessing: pool.map vs używanie kolejek
Odpowiedz
Technika pool.map
jest "podzbiorem" techniki z kolejkami. Oznacza to, że bez konieczności posiadania pool.map
można go łatwo zaimplementować za pomocą Pool
i Queue
. To powiedziawszy, używanie kolejek daje ci dużo większą elastyczność w kontrolowaniu procesów puli, tzn. Możesz sprawić, że poszczególne typy komunikatów będą odczytywane tylko jeden raz przez cały cykl życia procesów, kontrolować procesy zamykania procesów w pulach itd.
Jeśli naprawdę szukasz "najczystszej i najprostszej techniki", najprawdopodobniej najprościej jest użyć concurrent.futures.ProcessPoolExecutor
. Ma on metodę map
, a także kilka innych prymitywów, które czynią ją bardzo użyteczną. Jest również kompatybilny z Queue
s.
bardzo łatwa i intuicyjna biblioteka. – Jaydev
- 1. Python multiprocessing Pool.map dzwoni aquire?
- 2. Python multiprocessing pool.map podnosi IndexError
- 3. Python multiprocessing Pool vs multiprocessing ThreadPool
- 4. Python multiprocessing: map vs map_async
- 5. Słownik python kolejek między procesami
- 6. Python Multiprocessing Lib Error (AttributeError: __exit__)
- 7. Python Multiprocessing
- 8. Python Multiprocessing Documentation Przykład
- 9. Python Multiprocessing Kill Processes
- 10. python: multiprocessing Zdarzenie
- 11. Multiprocessing and Selenium Python
- 12. Python Multiprocessing RuntimeError na Windows
- 13. Python multiprocessing i wspólna zmienna
- 14. Python multiprocessing Pool with map_async
- 15. Python multiprocessing: Pula niestandardowych procesów
- 16. Python decorator with multiprocessing failed
- 17. Jak niech Pool.map wziąć funkcję lambda
- 18. Python Multiprocessing prowadzący do wielu procesów zombie
- 19. Python multiprocessing and networking on Windows
- 20. Python multiprocessing: jak ograniczyć liczbę oczekujących procesów?
- 21. Python multiprocessing - Jak monitorować użycie pamięci?
- 22. Python 3.4 multiprocessing nie działa z py2exe
- 23. Python Multiprocessing apply_async używa tylko jednego procesu
- 24. Znalezienie wyjątek w Pythonie Multiprocessing
- 25. Python gwintowania vs. multiprzetwarzania w Linuksie
- 26. SqlAlchemy and Multiprocessing
- 27. python opencv - wykrywanie obiektów typu blob lub wykrywanie kolejek
- 28. jak wyraźnie podać priorytety kolejek z python-rq
- 29. Boo vs C# vs Python?
- 30. Używanie array.prototype.push vs array.push
Czy 'pool.map' automatycznie zamyka procesy po zakończeniu? – Michael
Z dokumentów: '' Gdy obiekt puli jest zbiorem śmieci, terminate() zostanie natychmiast wywołane. ". Ale nie będę polegać na tym - lepiej, jeśli upewnisz się, że basen jest zamknięty na końcu twojej aplikacji. W przeciwnym razie możesz skończyć z kilkoma zombie pozostawionymi w twoim systemie. Jeśli chodzi o 'pool.map' - nie, to nie wyłącza procesów. Procesy trwają tak długo, jak ich pula, chyba że są zamknięte lub osierocone. –