Как вы обычно ускоряете вычисления, если Python показывает ожидаемое время работы кода несколько часов или дней?😄
Есть простой способ сократить время и заставить процессор работать на полную мощность при помощи библиотеки joblib😎
Она умеет не только (де-)сериализовать объекты, но ещё и упрощает использование нескольких процессов или потоков на Python без необходимости углубляться в тонкости теории.
Ключевой инструмент для параллельного выполнения задач — Parallel. Попробуйте сравнить два варианта кода:
import time
from tqdm import tqdm
def slow_function(x):
time.sleep(1)
return x**2
results = [slow_function(x) for x in tqdm(range(100))]
и
from joblib import Parallel, delayed
# Обертка для распараллеливания
results = Parallel(n_jobs=4)(delayed(slow_function)(x) for x in tqdm(range(100)))
Как это работает:
🌟 Parallel(n_jobs) указывает, сколько процессов или потоков использовать. Например, при
n_jobs=4 будут использоваться 4 ядра процессора, а при n_jobs=-1 — все доступные. Так что, если точно не знаете, какое число указать, попробуйте -1, т.к. если переборщить, код может не сработать🙈🌟 delayed превращает функцию в "ленивую", откладывая её выполнение до тех пор, пока Parallel не передаст её в пул процессов.
Полезные ссылки:
🔗 Документация joblib
🔗 Репозиторий GitHub
Хорошей недели!❄️
#python@data_easy