【问题标题】:Parallel Evaluation of Cloudpickle object using Joblib使用 Joblib 并行评估 Cloudpickle 对象
【发布时间】:2020-11-11 21:47:41
【问题描述】:

我想在我的机器上使用多个内核来评估一个 cloudpickle 对象(由 sympy 的 lambdify 创建)。下面是我正在尝试做的一个最小示例。

import sympy as sy
import cloudpickle
from joblib import Parallel, delayed

x, y = sy.symbols("x, y")
expr = sy.sin(x) + sy.cos(y)
expr_numpy = sy.lambdify((x, y), expr, modules="numpy")

with open('pickle_test/sample_pickle.pkl', 'wb') as f:
     f.write(cloudpickle.dumps(expr_numpy))

with open('pickle_test/sample_pickle.pkl', 'rb') as f:
    sample_pickle = cloudpickle.load(f)

def evaluate_pickle(x, y):
    result = sample_pickle(x, y)
    return x, y, result

trials = 10
value_x = np.random.uniform(0, 5, trials)
value_y = np.random.uniform(0, 5, trials)

Parallel(n_jobs=4)(delayed(evaluate_pickle)(value_x, value_y) for i in range(trials))

我收到以下错误:

joblib.externals.loky.process_executor.BrokenProcessPool: A task has failed to un-serialize. Please ensure that the arguments of the function are all picklable.

【问题讨论】:

    标签: python-3.x pickle sympy joblib


    【解决方案1】:

    我实际上能够运行代码而没有任何错误(在将路径从 pickle_test/sample_pickle.pkl 更改为 ./sample_pickle.pkl 之后)。

    以下是此代码成功运行的以下软件版本:numpy 1.19.5、sympy 1.7.1、cloudpickle 1.6.0、joblib 1.0.1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 2012-02-25
      • 2020-06-11
      • 2020-04-05
      • 2013-08-24
      • 1970-01-01
      • 2017-01-10
      相关资源
      最近更新 更多