Я пытаюсь использовать Process Массивы для того, чтобы использовать структуру массива между несколькими процессами, но не могу показаться, чтобы инициализировать the example:Python многопроцессорной Инициализация массива
from multiprocessing import Process, Lock
from multiprocessing.sharedctypes import Value, Array
from ctypes import Structure, c_double,c_char_p
class Point(Structure):
_fields_ = [('x', c_double), ('y', c_double)]
class Call(Structure):
_fields_ = [('participantId',c_char_p)]
def modify(n,s):
n.value **= 2
#x.value **= 2
s.value = s.value.upper()
#for a in A:
# a.x **= 2
# a.y **= 2
if __name__ == '__main__':
lock = Lock()
n = Value('i', 7)
#x = Value(c_double, 1.0/3.0, lock=False)
s = Array('c', 'hello world', lock=lock)
A = Array(Call,['ebtirgnm-sqr7-h2fd-wa80-baoctu684qma'], lock=lock)
#A = Array(Point, [(1.875,-6.25), (-5.75,2.0), (2.375,9.5)], lock=lock)
p = Process(target=modify, args=(n,s))
p.start()
p.join()
print n.value
# print x.value
print s.value
я получаю ошибку при инициализации моего массива с вызова Объект в этой строке:
A = Array(Call,['ebtirgnm-sqr7-h2fd-wa80-baoctu684qma',], lock=lock)
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python /Users/gogasca/Documents/OpenSource/Development/Python/tpsEmulator/tpsEmulator/tools/Array.py
Traceback (most recent call last):
File "/Users/gogasca/Documents/OpenSource/Development/Python/tpsEmulator/tpsEmulator/tools/Array.py", line 25, in <module>
A = Array(Call,['1'], lock=lock)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/sharedctypes.py", line 115, in Array
obj = RawArray(typecode_or_type, size_or_initializer)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/sharedctypes.py", line 89, in RawArray
result.__init__(*size_or_initializer)
TypeError: expected Call instance, got str
Я попытался:
call1 = Call(["1"])
['1',]
[('1')]
[0]
Не повезло