我有一台服务器,该服务器首先执行一些“初始配置”(可以从用户那里接受它,也可以从命令行读取)。
然后,服务器派生多个相同类型的工作程序。然后,每个工作人员都会执行一些特定于工作人员的初始配置。
工作人员从不同的模块调用多个功能。
我希望每个功能都能够访问服务器执行的初始配置(此配置在所有worker的所有模块的所有功能中都是相同的)和特定于其自己worker的配置。
我应该怎么做?我应该将此配置信息作为参数传递给所有功能,还是应该有一个保存此配置的文件。我尝试了如下的简单代码:
thread_module
server_worker.py
import uuid
import libX
import multiprocessing as mu
from time import sleep
import thread_module_config as conf #
from random import random
def worker(a):
sleep(random())
conf.worker_specific_conf = uuid.uuid4() #
libX.functionX()
sleep(random())
libX.functionY()
sleep(random())
conf.common_conf = random()
pool = mu.Pool(processes = 2)
pool.map(worker, range(3))
libX.py
import thread_module_config as conf #
from posix import getpid
def functionX():
print(str(getpid()) + " : " + str(conf.worker_specific_conf) + " : " + str(conf.common_conf))
def functionY():
print(str(getpid()) + " : " + str(conf.worker_specific_conf) + " : " + str(conf.common_conf))
thread_module_config.py
worker_specific_conf = None
common_conf = None
示例输出
15764 : 53c66e78-204c-49c5-befe-6f4db765593b : 0.7694252432785341
15764 : 53c66e78-204c-49c5-befe-6f4db765593b : 0.7694252432785341
14276 : 10dc5cfd-bac6-48d2-9343-33dca10f5ffc : 0.7694252432785341
15764 : 5210bb8e-feb7-4d13-9ff9-88b5461ee67b : 0.7694252432785341
14276 : 10dc5cfd-bac6-48d2-9343-33dca10f5ffc : 0.7694252432785341
15764 : 5210bb8e-feb7-4d13-9ff9-88b5461ee67b : 0.7694252432785341
如您所见,通用配置0.7694252432785341
在工作进程,模块之间是相同的。但是,即使每个函数与其他线程中的函数间歇运行,每个函数也只能访问特定于该工作程序的uuid。
这是实现我正在做的事情的正确方法吗?还是有其他标准方法可以实现这一目标?