2

以下代码用于在某些时候发出日志,但似乎不再这样做。每个工作人员中的日志记录机制配置不应该允许日志出现在标准输出上吗?如果没有,我忽略了什么?

import logging
from distributed import Client, LocalCluster
import numpy as np

def func(args):
    i, x = args
    logging.basicConfig(level=logging.INFO,
                        format='%(asctime)s %(name)s %(levelname)s %(message)s')
    logger = logging.getLogger('func %i' % i)
    logger.info('computing svd')
    return np.linalg.svd(x)

if __name__ == '__main__':
    lc = LocalCluster(10)
    c = Client(lc)
    data = [np.random.rand(50, 50) for i in range(50)]
    fut = c.map(func, zip(range(len(data)), data))
    results = c.gather(fut)
    lc.close()

根据这个问题,我尝试将记录器配置代码放入c.run(init_logging)在客户端实例化后立即调用的单独函数中,但这也没有任何区别。

我在 Linux 上使用分布式 1.19.3 和 Python 3.6.3。我有

logging:
    distributed: info
    distributed.client: info

~/.dask/config.yaml.

4

1 回答 1

0

显然,在尝试从生成的期货中检索结果之前,提交的函数实际上并没有执行,即使用该行

print(list(results))

在关闭本地集群之前。我不确定如何将此与在线文档中的部分相协调,该部分似乎声明直接提交到集群会立即执行。

于 2017-11-17T18:28:37.213 回答