使用joblib并行时如何设置procss /线程

时间:2019-03-18 07:40:42

标签: joblib

这是joblib parallel的常用用法

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)

0 个答案:

没有答案