Совместное использование логических процессов - PullRequest
0 голосов
/ 11 июня 2019

Я хочу разделить значение bool между двумя процессами в Python.У меня есть очередь, которую я хотел бы инициализировать, чтобы она заполнялась при первом запуске цикла while.После этого bool устанавливается в значение true, и другой процесс теперь может начать чтение из очереди.

ПРИМЕЧАНИЕ. Я пытался использовать значение, но bool не обновляется.Нужно ли передавать bool как arg процессу, чтобы это работало?

Кроме того, вот мой код:

#Main thread
bool_val = Value(“i”, 0)

#queue gets written to...

bool_val = Value(“i”, 1)

#other thread
If bool(bool_val) is True:
    #read from queue

1 Ответ

0 голосов
/ 11 июня 2019

Если вы используете multiprocessing.Value - к самому объекту можно получить доступ через атрибут value.

Вот примитивный пример:

from multiprocessing import Process, Value, Queue, cpu_count, current_process


def handle(v):
    val = v.value
    if bool(val) is True:
        print('process {} is using value {}'.format(current_process().name, val))
    else:
        v.value = 1
        print('process {} changed value {} to {}'
              .format(current_process().name, val, v.value))


if __name__ == '__main__':
    v = Value('i', 0)

    processes = [Process(target=handle, args=(v,)) for _ in range(cpu_count())]
    for p in processes:
        p.start()

    for p in processes:
        p.join()

    print(v, v.value)

Выход:

process Process-1 changed value 0 to 1
process Process-2 is using value 1
process Process-3 is using value 1
process Process-4 is using value 1
process Process-5 is using value 1
process Process-6 is using value 1
process Process-7 is using value 1
process Process-8 is using value 1
process Process-9 is using value 1
process Process-10 is using value 1
process Process-11 is using value 1
process Process-12 is using value 1
<Synchronized wrapper for c_int(1)> 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...