Ich habe einen kurzen Code, der das multiprocessing
-Paket verwendet und auf meinem lokalen Computer funktioniert. _multiprocessing.SemLock ist nicht implementiert, wenn auf AWS Lambda
Als ich AWS Lambda
hochgeladen und dort laufen, bekam ich die folgende Fehlermeldung (stacktrace getrimmt):
[Errno 38] Function not implemented: OSError
Traceback (most recent call last):
File "/var/task/recorder.py", line 41, in record
pool = multiprocessing.Pool(10)
File "/usr/lib64/python2.7/multiprocessing/__init__.py", line 232, in Pool
return Pool(processes, initializer, initargs, maxtasksperchild)
File "/usr/lib64/python2.7/multiprocessing/pool.py", line 138, in __init__
self._setup_queues()
File "/usr/lib64/python2.7/multiprocessing/pool.py", line 234, in _setup_queues
self._inqueue = SimpleQueue()
File "/usr/lib64/python2.7/multiprocessing/queues.py", line 354, in __init__
self._rlock = Lock()
File "/usr/lib64/python2.7/multiprocessing/synchronize.py", line 147, in __init__
SemLock.__init__(self, SEMAPHORE, 1, 1)
File "/usr/lib64/python2.7/multiprocessing/synchronize.py", line 75, in __init__
sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
OSError: [Errno 38] Function not implemented
Kann es sein, dass ein Teil der Kernpakete der Python in nicht umgesetzt? Ich habe keine Ahnung, worauf ich unten laufe, also kann ich mich dort nicht einloggen und debuggen.
Irgendwelche Ideen wie kann ich multiprocessing
auf Lambda laufen?
Können Sie näher erläutern, wie dieses Problem mit joblib zu lösen? Ich teste es gerade aus, und Joblib geht zurück zu seriellen Operationen: '[Errno 38] Funktion nicht implementiert. Joblib wird im seriellen Modus arbeiten. – pjgranahan
[Dieser Thread] (https://github.com/joblib/joblib/issues/391) scheint darauf hinzuweisen, dass joblib dieses Problem nicht umgehen kann. – pjgranahan
Ja, Entschuldigung, ich habe nie tief genug gegraben. Könnte gut nicht funktionieren. – glennji