python - 在进程之间共享 bool 值

标签 python multithreading sockets audio multiprocessing

我希望在Python的两个进程之间共享 bool(boolean) 值。我有一个队列,我想通过让它在while循环的第一次运行中填充来初始化。此后, bool(boolean) 值设置为true,其他进程现在可以开始从队列中读取了。

注意:我尝试使用值,但 bool(boolean) 值不会更新。我是否需要将 bool(boolean) 值作为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

最佳答案

如果您依赖使用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

关于python - 在进程之间共享 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56549971/

相关文章:

python - 如何在 Python 中比较两个 SQLite 数据集并搜索相似之处?

PHP 能够处理多个 TCP 连接吗?

java - 线程之间传递数据,都可以生产,都应该消费(Java)

java - 从另一个线程访问值

javascript - 文件系统是否运行在 javascript 的不同线程上

python - 属性错误 : 'module' object has no attribute

c - 调用 I/O 或 sleep() 后 UDP sendto() 失败

python - 非常基本的 SymPy 错误

python - 检索 pool.apply_async() 结果时出现类型错误

python - 减少文本文件大小的编程技术