Код: Выделить всё
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
Код: Выделить всё
c_wchar_p(2184070568752)
Код: Выделить всё
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()
Я ожидаю, что Threading() внутри Multiprocessing() также может обращаться к Value(). Итак, при вызове dc.value он возвращает строку домена. Есть ли способ распределить редактируемую строку глобальной переменной между многопроцессорными процессорами и потоками?
Запуск последней версии python3.12
в Windows 11 22H2
Подробнее здесь: https://stackoverflow.com/questions/792 ... lternative
Мобильная версия