有没有办法使用cfg.py之类的文件来进行全局变量的多处理?

时间:2019-10-02 11:39:50

标签: python multiprocessing global-variables

我正在尝试在多处理中读取和写入字节数组。有没有办法使这种方法适用于子流程?

https://docs.python.org/3/faq/programming.html#how-do-i-share-global-variables-across-modules

由于用于定义mp和套接字的所有众多代码行,我将尽力总结出我能做到的最好的

我尝试在每个进程中导入config.py

config.py:
x = 0   # Default value of the 'x' configuration setting
y = 0

mod.py:

import config
def run_socket(socket):
    data = socket.recv(8)
    config.x = int.from_bytes(data[0:4])
    config.y = int.from_bytes(data[4:8])


main.py:

import config
import mod
import multiprocessing as mp

#define and start a socket

def run_this():
    while True:
        mod.run_socket(socket)


aprocess = mp.Process(target = run_this, args=(variables,)

# I have 4 more process that I want to update config.x and config.y in. I cannot get them to update.

当前,除非我在run_socket函数中更新它们,否则所有值都将保持config.py值。但是我需要在其他过程中更新它们。这是在Linux上

1 个答案:

答案 0 :(得分:0)

您需要使用multiprocessing.Manager

  

sort | head -n 1返回一个开始的multiprocessing.Manager对象,该对象可用于在进程之间共享对象。返回的管理器对象对应于生成的子进程,并具有创建共享对象并返回相应代理的方法。

Here's an example