По причинам совместимости мне нужны два интерпретатора Python для запуска, мое программное обеспечение работает с MSYS2, но некоторые библиотеки не поддерживаются (pythonnet, genicam2) и должны запускаться непосредственно в Windows. Оба Python 3.7.
Мое программное обеспечение порождает подпроцесс следующим образом:
supbrocess.Popen("<path_to_python> module.py")
Для применения в машинном зрении мне нужно передать большие данные (изображения, полученные с камер) со второго переводчика на первый (работающий с MSYS2).
Я начал использовать mmap с анонимным отображением, но я не понимаю, каким образом подпроцесс должен обращаться к этой памяти, хотя в документации это выглядит прямо:
import mmap
import os
mm = mmap.mmap(-1, 13)
mm.write(b"Hello world!")
pid = os.fork()
if pid == 0: # In a child process
mm.seek(0)
print(mm.readline())
mm.close()
Как я могу позволить своему дочернему подпроцессу получать доступ к этой общей памяти, если я не использую os.fork
?
EDIT:
После проверки os.fork
доступен только в Unix. Так что это выглядит еще сложнее.