如何通过另一个脚本的调用运行Dask Client?

时间:2018-11-07 17:47:09

标签: python-3.x dask-distributed luigi

我有一个在Luigi中完成的处理,在其中一个阶段中,我在DataFrame中执行一系列计算。为了加快速度,我决定使用本地的Dask群集。当我通过Python或Jupyter运行时,群集启动,并且一切运行正常,但是当它在Luigi中运行时,出现以下错误:

  

UserWarning:无法在端口8787上启动诊断服务器。

df = func(params)
df.to_csv('...')

def func(params):
  df = params.get('df')
  client = Client()
  result = [client.submit(sample, row) for index, row in df.iterrows()]
  result = client.gather(result)
  new_df = pd.DataFrame(result)
  return df

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这是未经测试的代码(没有使用luigi的经验)
下面的代码(作为单独的模块)如何-

from dask.distributed import Client  
df = func(params)
df.to_csv('...')

def func(params):
  df = params.get('df')
  result = [client.submit(sample, row) for index, row in df.iterrows()]
  result = client.gather(result)
  new_df = pd.DataFrame(result)
  return df 

if __name__ == "__main__":  
    with Client() as client:  
        df_result = func(params)