When using multiprocessing, it gives an error:
Traceback (most recent call last):
File "P:\Python Project\Camera\example.py", line 75, in <module>
D455_proc.start()
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\multiprocessing\process.py", line 121, in start
self._popen = self._Popen(self)
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\multiprocessing\context.py", line 224, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\multiprocessing\context.py", line 336, in _Popen
return Popen(process_obj)
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\multiprocessing\popen_spawn_win32.py", line 93, in __init__
reduction.dump(process_obj, to_child)
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\multiprocessing\reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
TypeError: cannot pickle 'pyrealsense2.pyrealsense2.device' object
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\multiprocessing\spawn.py", line 116, in spawn_main
exitcode = _main(fd, parent_sentinel)
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\multiprocessing\spawn.py", line 126, in _main
self = reduction.pickle.load(from_parent)
EOFError: Ran out of input
What could be the reason?
from Camera import Camera, CameraRS # Self-written libraries
from multiprocessing import Barrier, Process
if __name__ == "__main__":
D455 = CameraRS(device_id=0, mode="stream")
barrier = Barrier(1)
args_d455 = {
"color_profile": 96,
"depth_profile": 226,
"show_gui_color": True,
"show_gui_depth": False,
"img_count": 3,
"time_out": 3,
"barrier": barrier,
}
D455_proc = Process(target=D455.stream, kwargs=args_d455,
name=f"{D455.get_device_name()} #{D455.get_serial_number}")
D455_proc.start()
When running the code on Linux, everything works fine. But when used on Windows nothing works.