I’m trying to share a Ctypes Structure
between some processes using Multiprocessing.Value()
. For some reason, this one struct isn’t working, and causes a random RecursionError
somewhere deep inside Multiprocessing
. Whats causing it? I’ve had no trouble making structs like this before, and its certainly not the size of something like this.
Example Program:
from ctypes import c_float, c_bool, c_int, Structure
from multiprocessing import Value
class goodStruct(Structure):
_pack_ = 1
_fields_ = [
('connected' ,c_bool),
('connected_complete' ,c_bool)
]
class badStruct(Structure):
_pack_ = 1
_fields_ = [
('connected' ,c_bool),
('connected_complete' ,c_bool),
('power_arm' ,c_bool),
('power_arm_complete' ,c_bool),
('slowmove' ,c_bool),
('slowmove_complete' ,c_bool),
('livemove' ,c_bool),
('livemove_complete' ,c_bool),
('end_livemove' ,c_bool),
('end_livemove_complete',c_bool),
('error' ,c_int),
('clear_error' ,c_bool),
('clear_error_complete' ,c_bool),
('release' ,c_bool),
('release_complete' ,c_bool),
('stop' ,c_bool),
('stop_complete' ,c_bool)
]
a = Value(goodStruct)
b = Value(badStruct)
And the output:
Traceback (most recent call last):
File "C:Userse33965Softwarez_messing aroundstruct_test.py", line 36, in <module>
b = Value(badStruct)
File "C:Userse33965Miniconda3libmultiprocessingcontext.py", line 135, in Value
return Value(typecode_or_type, *args, lock=lock,
File "C:Userse33965Miniconda3libmultiprocessingsharedctypes.py", line 82, in Value
return synchronized(obj, lock, ctx=ctx)
File "C:Userse33965Miniconda3libmultiprocessingsharedctypes.py", line 122, in synchronized
return scls(obj, lock, ctx)
File "C:Userse33965Miniconda3libmultiprocessingsharedctypes.py", line 190, in __init__
self.release = self._lock.release
File "<string>", line 13, in setrelease
File "<string>", line 7, in getrelease
File "<string>", line 7, in getrelease
File "<string>", line 7, in getrelease
[Previous line repeated 989 more times]
File "<string>", line 3, in getrelease
RecursionError: maximum recursion depth exceeded while calling a Python object