здесь обычно используется параллель Joblib
import numpy as np
from joblib import Parallel, delayed
def is_memmap(obj):
return isinstance(obj, np.memmap)
Parallel(n_jobs=2, max_nbytes=1e6)(
delayed(is_memmap)(np.ones(int(i))) for i in [1e2, 1e4, 1e6])
Мне нужно использовать соединение с моей базой данных в функции: is_memmap , но это соединение не может быть разделено между работниками, поэтомуЯ должен открыть соединение при входе и закрыть при выходе:
def is_memmap(obj):
# open connection
# do something
# close connection
return isinstance(obj, np.memmap)
, так как joblib создаст рабочий пул и повторно его использует.Могу ли я открыть соединение для каждого потока / процесса, когда joblib создает рабочий пул?.
Так что мне не нужно много раз открывать / закрывать соединение.
вот чтоЯ хочу:
def is_memmap(obj):
# **connection is already open, I can use it with a magic varaible**
# do something
# conection will close after all work is done. no need close it here.
return isinstance(obj, np.memmap)