下面的代码曾经在某个时候发出日志,但似乎不再这样做了。难道每个worker中的日志记录机制的配置不应该允许日志出现在stdout上吗?如果不是,我忽略了什么?
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()根据this question,我尝试在客户端实例化之后立即将记录器配置代码放入通过c.run(init_logging)调用的单独函数中,但这也没有任何区别。
我在Linux上使用分布式1.19.3和Python 3.6.3。我有过
logging:
distributed: info
distributed.client: info在~/.dask/config.yaml中。
发布于 2017-11-18 02:28:37
显然,提交的函数实际上不会执行,直到有人尝试从生成的期货中检索结果,即使用下面的行
print(list(results))在关闭本地群集之前。我不确定如何将这一点与在线文档中的the section协调起来,因为在线文档似乎指出,直接提交到集群是立即执行的。
https://stackoverflow.com/questions/47268169
复制相似问题