4 votes

Comment résoudre l'erreur "Can't pickle local object" en utilisant pandarallel ?

J'essaie d'utiliser le module pandarallel pour accélérer mes fonctions d'application dans pandas. Lorsque j'exécute l'exemple fourni sur le site Page git de pandarallel, j'obtiens l'erreur suivante : AttributeError : Impossible de récupérer l'objet local 'prepare_worker..closure..wrapper'.

Voici mon code :

from pandarallel import pandarallel
import pandas as pd
import numpy as np
import math

pandarallel.initialize(nb_workers=4)

df_size = int(5e6)
df = pd.DataFrame(dict(a=np.random.randint(1, 8, df_size),
                       b=np.random.rand(df_size)))

def func(x):
    return x

res_parallel = df.parallel_apply(func, axis=1)

0voto

above_c_level Points 1932

C'est un problème connu : https://github.com/nalepae/pandarallel/issues/72

Il y a aussi la solution postée par C1ARKGABLE. Utilisez un nouvel environnement virtuel avec les paquets suivants avec python 3.7.3 :

  • numpy 1.17.4
  • pandarallel 1.4.6
  • pandas 0.25.3

Remarque personnelle : les cornichons et les pandas ne font pas bon ménage. À éviter si possible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X