我有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()
我正在运行" python client.py"从两个不同的终端/机器几乎同时两次。客户端似乎都在执行,但它产生的输出完全相同,因为my_task()的返回类型是一个随机值。我在ubuntu机器上测试了这个。
然而一个月前,我能够在CentOs机器上并行运行相同的任务。现在如果检查并从那些CentOs机器运行相同的两个任务,问题仍然存在。这很奇怪。它没有并行运行。无法通过dask找出这种行为。我是否缺少任何操作系统级别设置或其他内容。?
几乎同时运行以下内容,
python client.py # from one machine/terminal
python client.py # from another machine/terminal
这两个任务应该并行运行,每个任务应该在不同的工作人员上运行(我们有两个免费工作人员可用),但这不会发生。我无法在第二个工作台控制台上看到任何日志,也无法在调度程序上看到任何日志,而第一个任务继续执行。最后,我注意到两个任务完全同时完成,输出完全相同。
然而,上述客户端代码在" parallel"在Windows OS中,每个任务都通过多个终端运行。但我想在Ubuntu机器上运行它。
答案 0 :(得分:4)
默认情况下,如果在相同输入上调用相同的函数,Dask将假设这将产生相同的值,并且只计算一次。您可以使用> electron .
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! first-electron@1.0.0 start: `electron .`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the first-electron@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
关键字
pure=False