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

Dask-相同的任务不会在Ubuntu机器集群上并行运行,dask,dask-distributed,Dask,Dask Distributed,我有3台ubuntu机器(CPU)。我的dask调度程序和客户机都在同一台机器上,而两个dask工作程序在其他两台机器上运行。当我启动第一个任务时,它会被安排在第一个工作线程上,但在启动第二个工作线程时,当第一个任务仍在执行时,它不会被安排在第二个工作线程上。下面是我尝试过的示例客户机代码 ### client.py from dask.distributed import Client import time, sys, os, random def my_task(arg): pr

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

### 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()
我几乎同时在两台不同的终端/机器上运行了两次“pythonclient.py”。这两个客户端似乎都在执行,但它会产生完全相同的输出,这是不应该的,因为my_task()的返回类型是一个随机值。我在ubuntu机器上测试了这个

然而一个月前,我能够在CentOs机器上并行运行相同的任务。现在,如果检查并从CentOs机器上运行相同的两个任务,问题仍然存在。这很奇怪。它不是并行运行的。无法通过dask了解此行为。我是否缺少任何操作系统级别的设置或其他内容

几乎同时运行下面的程序

python client.py # from one machine/terminal
python client.py # from another machine/terminal
这两个任务应该并行运行,每个任务应该在不同的工作线程上运行(我们有两个可用的空闲工作线程),但这不会发生。当第一个任务继续执行时,我在第二个工作控制台或调度程序上看不到任何日志。最后,我注意到两个任务以完全相同的输出在同一时间完成


但是,上述客户端代码在windows操作系统中“并行”运行良好,每个任务都通过多个终端运行。但是我想在Ubuntu机器上运行它。

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

future = client.submit(func, *args, pure=False)

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

future = client.submit(func, *args, pure=False)
你很和蔼可亲你很和蔼可亲D(:砰的一声)