Python3: как определить, можно ли использовать / dev / shm (или ProcessPoolPexecutor)? - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть некоторый код, который улучшается благодаря многопроцессорности, однако в AWS Lambda /dev/shm недоступен, поэтому ProcessPoolExecutor завершается с ошибкой с загадочным сообщением об ошибке:

 File "/var/task/black.py", line 529, in reformat_many
    executor = ProcessPoolExecutor(max_workers=worker_count)
  File "/var/lang/lib/python3.7/concurrent/futures/process.py", line 556, in __init__
    pending_work_items=self._pending_work_items)
  File "/var/lang/lib/python3.7/concurrent/futures/process.py", line 165, in __init__
    super().__init__(max_size, ctx=ctx)
  File "/var/lang/lib/python3.7/multiprocessing/queues.py", line 42, in __init__
    self._rlock = ctx.Lock()
  File "/var/lang/lib/python3.7/multiprocessing/context.py", line 67, in Lock
    return Lock(ctx=self.get_context())
  File "/var/lang/lib/python3.7/multiprocessing/synchronize.py", line 162, in __init__
    SemLock.__init__(self, SEMAPHORE, 1, 1, ctx=ctx)
  File "/var/lang/lib/python3.7/multiprocessing/synchronize.py", line 59, in __init__
    unlink_now)
OSError: [Errno 38] Function not implemented

естьПортативный способ обнаружить, что он потерпел бы неудачу?

1 Ответ

1 голос
/ 05 ноября 2019

Вы можете использовать попытку / за исключением вашего исключения: https://docs.python.org/fr/3/tutorial/errors.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...