multiprocessing
パッケージを使用し、ローカルマシンで正常に動作する短いコードがあります。AWS Lambdaで実行しているときに_multiprocessing.SemLockが実装されていません
私はAWS Lambda
にアップロードされ、そこに実行すると、私は次のエラーを得た(スタックトレースをトリミング):
[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
それが実装されていませんでPythonのコアパッケージの一部ということはできますか?私は何の下に実行されているので、私はそこにログインしてデバッグすることができないのか分からない。
ラムダでmultiprocessing
を実行するにはどうすればよいですか?
あなたはjoblibでこの問題を解決する方法を詳しく説明できますか?私は今すぐテストしていますが、ジョブライブラリはシリアル操作に失敗しています: '[Errno 38] Function not implemented。 joblibはシリアルモードで動作します。 – pjgranahan
[このスレッド](https://github.com/joblib/joblib/issues/391)は、joblibが実際にこの問題を回避できないことを示唆しているようです。 – pjgranahan
申し訳ありませんが、私はこれを十分に深く掘ったことはありません。うまくいきません。 – glennji