Проблема Pyftdi с многопроцессорностью
В настоящее время я использую плату FT232H Breakout (USB GPIO) от Adafruit, которой я управляю с помощью Pyftdi в Windows, используя драйвер libusbK 3.0.7, установленный через ZADIG. Он отлично работает во всех аспектах, но для этого конкретного проекта мне нужно использовать модуль многопроцессорности. Однако я не могу заставить Pyftdi работать с ним. Чтобы воспроизвести мою проблему, вы можете просто запустить этот фрагмент кода.
import multiprocessing as mp
import board
def func():
print('This will crash')
p1 = mp.Process(target=func)
p1.start()
p1.join()
p1.terminate
Из того, что я могу понять, проблема заключается в том, что при создании нового процесса Python снова импортирует модуль платы, необходимый для запуска FT232H, и пытается заявить, что его интерфейс USB уже заявлен, выдавая эту ошибку:
pyftdi.ftdi.FtdiError: UsbError: [Errno None] b'libusb0-dll:err [claim_interface] не может претендовать на интерфейс 0, ошибка win: невозможно создать файл, если этот файл уже существует.
Однако, если я напишу об этом так, чтобы модуль платы не импортировался во второй раз для нового процесса, любые команды FT232H, запущенные в новом процессе, не будут работать.
У кого-нибудь есть идеи о том, как я могу решить это как-то?