Доступ к Multiprocessing Value() недоступен из потоков внутри Process().Python

Программы на Python
Ответить
Anonymous
 Доступ к Multiprocessing Value() недоступен из потоков внутри Process().

Сообщение Anonymous »

Я выполняю параллелизм, используя Multiprocessing() и Threading(). Идея состоит в том, чтобы создать несколько потоков из нескольких процессов. Потокам необходим доступ к глобальной переменной, которая использует Value(), чтобы переменную можно было изменять и распределять по процессу (и, как я полагаю, по потокам). Итак, структура:

Код: Выделить всё

from multiprocessing import Queue, Process, Value
dc = {A: Queue(cpu_count), B: Value(ctypes.c_wchar_p, '', lock = False), C: Value('i', 0, lock = False)}
Process1 as supplement process that spawns worker threads:
Threads1 as task_producer for Queue
Threads2 giving flag signal for KeyboardInterrupt dc[c].value
Process3-8 as main process that spawns multiple threads:
Threads1-4 from Process3-8 access dc[b].value to connect
Но после доступа потоки зависали при загрузке значения dc.value. Но при печати dc он работает и упоминает о существовании Value():

Код: Выделить всё

c_wchar_p(2184070568752)
При дальнейшей проверке изменение dc[c].value с Process1.Threads1 дает результат, отличный от Process3-8.Threads1-4.

Код: Выделить всё

##print(workers, dc[c].value)
Process1.Threads1 1
Process3-8,Threads1-4 0
Я ожидаю, что Threading() внутри Multiprocessing() также сможет получить доступ к Value(), полученному из модуля Multiprocessing(). Итак, при вызове dc.value он возвращает строку домена. Есть ли способ распределить строку редактируемой глобальной переменной между многопроцессорными процессорами и потоками?
Запуск последней версии python3.12
в Windows 11 22H2

Подробнее здесь: https://stackoverflow.com/questions/792 ... de-process
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»