Multiprocessing Value () Ctypes.c_wchar_p причина причина застрять, альтернатива?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Multiprocessing Value () Ctypes.c_wchar_p причина причина застрять, альтернатива?

Сообщение Anonymous »

Я занимаюсь параллельностью, используя многопроцестрой () и Thinking () . Идея состоит в том, чтобы породить несколько потоков из нескольких процессов. Потоки должны получить доступ к глобальной переменной, которая использует value () , чтобы переменная могла быть изменена и распределена по процессу (и потоки, которые, как я полагаю,). Итак, структура: < /p>

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

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 он работает и упоминает существование значения () :

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

c_wchar_p(2184070568752)
< /code>
Для теста я создал несколько минимальных воспроизводимых примеров: < /p>
from multiprocessing import Process, Queue, Manager, cpu_count, Value, Lock
import threading
import ctypes
import time

def print_props():
while True:
print('Process1 ', props['A'].value)

def change_props():
while True:
if props['A'].value == '0':
props['A'].value = '1'
else:
props['A'].value = '0'
print('Process2 ', props['A'].value)

def props_thread(n):
global props
props = n
task_producer_thread = threading.Thread(target = change_props)
task_producer_thread.start()
task_producer_thread.join()

def main_thread(n):
global props
props = n
task_producer_thread = threading.Thread(target = print_props)
task_producer_thread.start()
task_producer_thread.join()

def main():
parent_process = []
props_thread_process = Process(target = main_thread, args = (props, ))
props_thread_process.start()
parent_process.append(props_thread_process)

main_thread_process = Process(target = props_thread, args = (props, ))
main_thread_process.start()
parent_process.append(main_thread_process)

for i in parent_process:
i.join()

if __name__ == '__main__':
global props
props = {"A": Value(ctypes.c_wchar_p, '0', lock = False), "B": Value('i', 0, lock = False)}
main()
Это выглядит как значение (ctypes.c_wchar_p, '', lock = false) не может быть доступен одновременно начислять потоки и процесс, но используя значение ('i', 0, lock = false)

Подробнее здесь: https://stackoverflow.com/questions/792 ... lternative
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как в cpp исправить ошибку «использование удаленной функции Ort::Value::Value(const Ort::Value&)»
    Anonymous » » в форуме C++
    0 Ответы
    77 Просмотры
    Последнее сообщение Anonymous
  • Чтение из трубы процесса Shell и застрять
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Что делает терминал застрять при попытке запустить проект в моей среде разработки?
    Anonymous » » в форуме Javascript
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Доступ к Multiprocessing Value() недоступен из потоков внутри Process().
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Невозможно преобразовать QString в массив WChar.
    Гость » » в форуме C++
    0 Ответы
    41 Просмотры
    Последнее сообщение Гость

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