как настроить procss / thread при использовании joblib параллельно - PullRequest
1 голос
/ 18 марта 2019

здесь обычно используется параллель 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)
...