я хочу сделать следующее:сериализации/мариновать функцию, которая определена в строке
import pickle
namespace = {}
exec('def f(x): return x', namespace)
pickle.dumps(namespace['f'])
Однако это приводит к следующей ошибке:
---------------------------------------------------------------------------
PicklingError Traceback (most recent call last)
<ipython-input-102-61493bb3c732> in <module>()
2 namespace = {}
3 exec('def f(x): return x', namespace)
----> 4 pickle.dumps(namespace['f'])
PicklingError: Can't pickle <function f at 0x7f2134171950>: it's not the same object as __main__.f
Проблема, что я хочу Решите: у меня есть функция в строчном формате, и мне нужно иметь возможность ее сериализовать (для целей распараллеливания).
Вы должны объяснить, что в настоящее время происходит в вашем коде, который не отвечает ожиданиям. Что происходит, когда этот код работает прямо сейчас. Что вы ожидаете, должно случиться. Что * точно * вы пытаетесь достичь с помощью своего кода? Пожалуйста, пересмотреть, как собрать более твердый [mcve], чтобы лучше понять ваш вопрос. – idjaw
Спасибо за ваш комментарий, я добавил сообщение об ошибке. Более того, я думаю, что я достаточно четко описываю свою проблему. – johnbaltis