Можно ли создать объект SFrame внутри процесса, используя многопроцессорный модуль в Python?
def query(vector,model,k,radius):
##Create a sframe
nearest_neighbors = graphlab.SFrame({'id':[1,2,3]})
##Fill the sframe
##code##
return nearest_neighbors
def scalar_wrapper(mat):
my_dataframe=pd.DataFrame(columns=ds_original.columns)
ll=range(mat.shape[0])
print len(ll)
for i in ll:
tt=query(mat[i], model, k=10, max_search_radius=3)
my_dataframe=my_dataframe.append(tt,ignore_index=True)
return my_dataframe
def find_nearest(mat):
my_dataframe=pd.DataFrame(columns=ds_original.columns)
p = Pool(4)
x = p.map(scalar_wrapper, (mat[i::4] for i in range(4)) )
my_dataframe.append(x)
return my_dataframe
В приведенном выше коде разреженная матрица mat
будет передан функции find_nearest(), которая затем создаст 4 процесса, которые будут работать в разных частях mat
, В scalar_wrapper
, которая является многопроцессорной функцией, функцией с именем query()
будет вызываться для каждого ряда mat
который вернет SFrame
, Теперь проблема в том, что этот код застрял. Кажется, что я не могу создать SFrame
объект внутри процесса. Помогите мне найти проблему. Если проблема в SFrame, каково решение?