我有一个python multiprocessing设置(即工作进程)与自定义信号处理,这可以防止工人干净利用multiprocessing自己.(参见下面的扩展问题描述).
生成所有工作进程的主类如下所示(某些部分被剥离为仅包含重要部分).
在这里,它只重新绑定自己signal的印刷品Master teardown; 实际上,接收到的信号沿着进程树传播,必须由工作人员自己处理.这是通过在产生工人之后重新绑定信号来实现的.
class Midlayer(object):
def __init__(self, nprocs=2):
self.nprocs = nprocs
self.procs = []
def handle_signal(self, signum, frame):
log.info('Master teardown')
for p in self.procs:
p.join()
sys.exit()
def start(self):
# Start desired number of workers
for _ in range(nprocs):
p = Worker()
self.procs.append(p)
p.start()
# Bind signals for master AFTER workers have been spawned and started
signal.signal(signal.SIGINT, self.handle_signal)
signal.signal(signal.SIGTERM, self.handle_signal)
# Serve …Run Code Online (Sandbox Code Playgroud) 一个特定的设置要求我创建局部变量,__init__.py该变量将掩盖同一个包中的模块.
例如,变量y(在本地环境中__init__.py)将隐藏模块y.py.该语句import x.y将产生局部变量而不是加载模块.
如果您不想阅读特定设置,请向下滚动到问题; 没有细节,这是可以理解的.
我已经实现了一组Python 2.7包,每个包都需要单独的配置设置.为方便起见,我计划为每个软件包提供配置默认值,这些默认值可以由任何使用其中一个软件包的人在本地覆盖.
(这样做的基本原理是在将应用程序部署到运行特定环境的计算机(服务器,工作站,笔记本电脑等)时分发默认设置,但同时允许覆盖配置而不会弄乱本地存储库或重置本地适应代码更新.)
目录结构示例是:
~/pkg/
|
+- package_a/
| |
| +- __init__.py
| +- mod_x.py
| +- mod_y.py
|
+- package_b/
| |
| +- __init__.py
| +- mod_z.py
|
+- config/
| |
| +- __init__.py
| +- package_a.py # Should locally override <pkg>_sample.py
| +- package_a_sample.py
| +- package_b_sample.py
|
+- test_this.py
Run Code Online (Sandbox Code Playgroud)
我想访问存储在config/常规模块导入下的设置,例如:
# …Run Code Online (Sandbox Code Playgroud) 我的python技能在这一方面是生锈的。
我有项目清单。我想为他们创建一个ID并建立一个字典。
例:
users = ["John","Peter","Alice"]
Run Code Online (Sandbox Code Playgroud)
我想创造一个像
users_dict = {"u1":"John","u2":"Peter","u3":"Alice"}
Run Code Online (Sandbox Code Playgroud)
我在弄清楚如何创建for动态循环创建u +整数时遇到麻烦。我可能正在处理列表中的大量项目。
任何指导将不胜感激。