Python Glossary English

все 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Сообщить о неточности