Dask- 相同的任务不是 运行 在 Ubuntu 机器集群上并行

Dask- Same tasks are not running in parallel on cluster of Ubuntu machines

我有 3 ubuntu 台机器(CPU)。我的 dask 调度程序和客户端都在同一台机器上,而两个 dask worker 运行ning 在其他两台机器上。当我启动第一个任务时,它被安排在第一个工作人员上,但是在启动第二个工作人员时,当第一个任务仍在执行时,它没有被安排在第二个工作人员上。这是我尝试过的示例客户端代码。

### client.py

from dask.distributed import Client

import time, sys, os, random

def my_task(arg):
  print("doing something in my_task")
  time.sleep(2)
  print("inside my task..", arg)
  print("again doing something in my_task")
  time.sleep(2)
  print("return some random value")
  value = random.randint(1,100)
  print("value::", value)
  return value

client = Client("172.25.49.226:8786")
print("client::", client)
future = client.submit(my_task, "hi")
print("future result::", future.result())
print("closing the client..")
client.close()

我运行宁"python client.py"两次几乎同时来自两个不同的terminal/machines。两个客户端似乎都在执行,但它会产生完全相同的输出,这不应该是因为 my_task() 的 return 类型是一个 运行dom 值。我在 ubuntu 台机器上对此进行了测试。

然而一个月前,我能够 运行 在 CentOs 机器上并行执行相同的任务。现在,如果从那些 CentOs 机器上回头检查 运行 相同的两个任务,问题仍然存在。我是 st运行ge。它没有 运行 并行。无法通过 dask 弄清楚这种行为。我是否遗漏了任何 OS 级别设置或其他设置?

运行下面几乎同时,

python client.py # from one machine/terminal
python client.py # from another machine/terminal

这两个任务应该 运行 并行,每个任务应该 运行 在不同的 worker 上(我们有两个免费的 worker 可用),但这并没有发生。我在第二个工作控制台和调度程序上都看不到任何日志,而第一个任务继续执行。最后我注意到这两个任务完全同时完成,输出完全相同。

然而,上述客户端代码在 windows OS "parallel" 中运行良好,每个任务 运行 宁通过多个终端。但我想在 Ubuntu 台机器上 运行 它。

默认情况下,如果您对相同的输入调用相同的函数,Dask 将假定这将产生相同的值,并且只计算一次。您可以使用 pure=False 关键字

覆盖此行为
future = client.submit(func, *args, pure=False)