Python 如何使用joblib共享变量

Python 如何使用joblib共享变量,python,python-2.7,joblib,Python,Python 2.7,Joblib,类似于这个问题 我想在joblib中共享一个变量。然而,我的问题是完全不同的,我有一个巨大的变量(2-3Gb的RAM),我希望我的所有线程都从中读取。他们永远不会写,比如: def func(varThatChange, varToRead): # Do something over varToRead depending on varThatChange return results def main(): results = Parallel(n_jobs=100)

类似于这个问题

我想在joblib中共享一个变量。然而,我的问题是完全不同的,我有一个巨大的变量(2-3Gb的RAM),我希望我的所有线程都从中读取。他们永远不会写,比如:

def func(varThatChange, varToRead):
    # Do something over varToRead depending on varThatChange
    return results

def main():
    results = Parallel(n_jobs=100)(delayed(func)(varThatChange, varToRead) for varThatChange in listVars) 
我无法正常共享它,因为复制变量需要很多时间,而且内存不足

我如何共享它?

您可以尝试,例如:

import pandas as pd
import numpy as np
from joblib import Parallel, delayed
from multiprocessing import Manager

manager = Manager()
q = manager.Namespace()
q.arr = np.array([1,2,3,4])

def test(i, q):
    return q.arr[i]

out = Parallel(n_jobs=4)(delayed(test)(i, q) for i in range(4))
输出:

您可以尝试,例如:

import pandas as pd
import numpy as np
from joblib import Parallel, delayed
from multiprocessing import Manager

manager = Manager()
q = manager.Namespace()
q.arr = np.array([1,2,3,4])

def test(i, q):
    return q.arr[i]

out = Parallel(n_jobs=4)(delayed(test)(i, q) for i in range(4))
输出:


将其写入文件?这样会更慢。这样做的目的是避免复制数据。将数据写入文件?这样会更慢。这样做的目的是完全避免复制数据。