Код: Выделить всё
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