Работа с многопоточностью
Как выбрать количество пулов
CPU-based и I/O-based операции: https://stackoverflow.com/a/41780357
Если работаем с сетью, то можно выбрать побольше: 20, 40, 100
Если с файловой системой, то так не сработает, мы только забьем ресурсы и будет еще медленнее работать. Оптимально выбрать количество ядер помноженное на 2.
multithreading
Многопоточное выполнение над локальными процессами (например, над файловой системой)
Пример:
import os
import itertools
# Глубоко под копотом Pool из threading то же самое, что и Pool из multiprocessing.pool
from multiprocessing.dummy import Pool as ThreadPool
pool = ThreadPool(os.cpu_count() * 2)
results_iterator = pool.imap_unordered(do_something, some_iterator)
pool.close()multiprocessing
Про multiprocessing кратко: http://python-3.ru/page/multiprocessing
Логика, стоящая за выбором chunksize: https://stackoverflow.com/questions/53751050/multiprocessing-understanding-logic-behind-chunksize
Пример: по задумке — это брут чего-то
Timer
Выполняем задачу периодически, пока не вернется нужный результат:
Last updated