Действительно ли jax несовместим с многопроцессорностью Python?Python

Программы на Python
Anonymous
Действительно ли jax несовместим с многопроцессорностью Python?

Сообщение Anonymous »

У меня есть простое приложение с основным процессом контроллера и дочерним процессом, который обрабатывает вызовы API. Они общаются с помощью очередей Python.
Приложение выглядит (примерно) так:

Код: Выделить всё

import multiprocessing as mp

class Controller:
def _init__():
self.to_queue = mp.Queue()
self.from_queue = mp.Queue()

self.ws_data_client = mp.Process(target=self._start_client)

def _start_client(self):
dcw = DataClientWorker(self.to_queue, self.from_queue) # handles incoming and outgoing msg over websocket
asyncio.run(dcw.run())

def run():
self.ws_data_client.start()
while True:
#do stuff

def main():
controller = Controller()
controller.run()
Что я хочу сделать
В разделе # сделать что-нибудь я хочу использовать ускорение графического процессора JAX для выполнения некоторых вычислений над входящими данными. Однако, когда я импортирую JAX и пытаюсь использовать любые функции JAX, я получаю:

RuntimeWarning: был вызван os.fork(). os.fork() несовместим с
многопоточным кодом, а JAX является многопоточным, поэтому это, скорее всего, приведет
к тупику.


Мои вопросы
  • Почему именно использование JAX и многопроцессорности приводит к тупик?
  • Есть ли обходной путь для этой проблемы?
  • Нужно ли мне переписать код, чтобы использовать потоки вместо (много)процессов?
  • Каково здесь правильное решение?


Подробнее здесь: https://stackoverflow.com/questions/797 ... iprocesses

Вернуться в «Python»