Действительно ли 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()


теперь в разделе «делать что-то» я хочу использовать ускорение графического процессора jaxs, чтобы выполнить некоторые вычисления над входящими данными. Однако, когда я импортирую jax и пытаюсь использовать любые функции jax, я получаю:
RuntimeWarning: был вызван os.fork(). os.fork() несовместим с многопоточным кодом, а JAX является многопоточным, поэтому это, скорее всего, приведет к взаимоблокировке.
Почему именно использование jax и многопроцессорной обработки приводит к взаимоблокировке? Есть ли обходной путь для этого? Нужно ли мне переписывать свой код, чтобы использовать потоки вместо многопроцессоров? Какое правильное решение?

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

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