Das Paket joblib
hat eine Funktion , die die an die Funktion übergebenen Argumente erfasst.Warum funktioniert `joblib.delayed` nicht als Dekorateur?
from joblib import delayed
def f(n):
return n**2
delayed(f)(2)
# (<function f at 0x7f939eb3fe60>, (2,), {})
h = delayed(f)
h(2)
# (<function f at 0x7f939eb3fe60>, (2,), {})
Letztere Nutzung macht mich diese wie jede andere Dekorateur verwendet werden denken konnte: Es kann zum Beispiel wie folgt verwendet werden. Dies wird durch seine documentation unterstützt:
joblib.delayed (Funktion, check_pickle = True)
Decorator verwendet, um die Argumente einer Funktion zu erfassen.
Dies ist jedoch nicht:
from joblib import delayed
@delayed
def g(n):
return n**2
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# File "/usr/lib/python2.7/dist-packages/joblib/parallel.py", line 158, in delayed
# pickle.dumps(function)
# File "/usr/lib/python2.7/copy_reg.py", line 70, in _reduce_ex
# raise TypeError, "can't pickle %s objects" % base.__name__
#TypeError: can't pickle function objects
ich schon versucht, diese mit Python 2.7.12