gpt4 book ai didi

python - 将任务分配给Python中的模块

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:20 24 4
gpt4 key购买 nike

我有一个名为 results 的列表和名为 modules 的相应模块列表,以及一些适用于所有的选项结果和模块。每个模块都有一个函数save,需要在与其对应的结果上调用该函数。所以我可以做如下的事情:

q = deque(results)
for module in modules:
module.save(q.popleft(), options)

或等效的:

for i in range(len(modules)):
modules[i].save(results[i], options)

这很好用。然而,我没有理由不同时做所有这些事情。但是如何以最好的方式并行化这个问题却让我困惑,尽管它看起来应该非常简单。有人可以指出我正确的方向吗?请使用 Python 2.6.6。

最佳答案

如果结果中的项目 are picklable ,然后你使用 Pool.apply_async像这样同时运行module.save:

import multiprocessing as mp
import itertools as IT
import logging

logger = mp.log_to_stderr(logging.DEBUG)
logger.setLevel(logging.DEBUG)

if __name__ == '__main__':
pool = mp.Pool()
for module, result in IT.izip(modules, results):
pool.apply_async(module.save, args=(result, options))

pool.close()
pool.join()

在 module.py 中:

import logging    
logger = logging.getLogger(__name__)

def save():
logger.debug('Starting save')
...
logger.debug('Exiting save')

当使用 logger.setLevel(logging.DEBUG) 运行时,您将看到大量调试消息,这将帮助您了解 Python 在每个进程的代码中的位置。

要静默日志记录,只需将该行更改为

logging.disable(logging.CRITICAL)

关于python - 将任务分配给Python中的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17796437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com