Python 如何使用joblib共享变量
类似于这个问题 我想在joblib中共享一个变量。然而,我的问题是完全不同的,我有一个巨大的变量(2-3Gb的RAM),我希望我的所有线程都从中读取。他们永远不会写,比如: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)
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))
输出:
将其写入文件?这样会更慢。这样做的目的是避免复制数据。将数据写入文件?这样会更慢。这样做的目的是完全避免复制数据。