Доступ к 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 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Process Process Process с более низким использованием процессора
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Process Process Process с более низким использованием процессора
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как в cpp исправить ошибку «использование удаленной функции Ort::Value::Value(const Ort::Value&)»
    Anonymous » » в форуме C++
    0 Ответы
    78 Просмотры
    Последнее сообщение Anonymous
  • Как исправить DeprecationWarning, когда concurrent.futures с multiprocessing.Process используются вместе?
    Anonymous » » в форуме Linux
    0 Ответы
    58 Просмотры
    Последнее сообщение Anonymous
  • Как устранить ошибку сломанного канала в случае QThread/multiprocessing.Process?
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

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