все Python 3multiprocessingфункция
multiprocessing.RawValue()
общая память
Создаёт значение ctypes в общей памяти без блокировки — голый объект вроде c_int. Быстрее Value, но безопасность доступа на вас.
Синтаксис
v = ctx.RawValue(typecode_or_type, *args)
Годится, когда пишет один процесс, а остальные только читают, или когда синхронизация уже есть снаружи (свой Lock). Параллельные v.value += 1 без блокировки теряют приращения молча. В отличие от Value, у результата нет get_lock(): это тот же объект, что даёт Value(..., lock=False). Документирован в multiprocessing.sharedctypes, а в корне модуля доступен как функция контекста.
Примеры
import multiprocessing as mp
def set_answer(v):
v.value = 42
if __name__ == '__main__':
ctx = mp.get_context('spawn')
v = ctx.RawValue('i', 0)
print(type(v).__name__) # → c_int
p = ctx.Process(target=set_answer, args=(v,))
p.start()
p.join()
print(v.value) # → 42
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности