首页 > 解决方案 > 为什么使用更多工人时任务需要更长的时间

问题描述

我目前正在努力理解为什么使用更多工人时单个任务会变慢。例如,有一个工人,每个任务大约需要 0.5 秒,而有六个工人,每个任务大约需要 1 秒。我正在使用的计算机有 8 个内核,所以我没想到会发生这种变化。

你能告诉我我做错了什么,或者为什么会有这种差异?下面是我正在使用的代码:

from dask.distributed import Client, LocalCluster

def compute():
    for _ in range(30000000):
        3*4

def gathered(list_):
    pass

if __name__ == "__main__":
    cluster = LocalCluster(n_workers=6, threads_per_worker=1)
    client = Client(cluster)

    graph = {}
    node_names = []

    for i in range(24):
        node_name = ('final_model', i+1)
        node_names.append(node_name)

        graph.update({
            node_name: (compute,)
        })

    graph.update({
        "gathered": (
            gathered,
            node_names
        )
    })

    client.get(graph, 'gathered')
    client.close()

感谢您的时间/帮助!

标签: pythondaskdask-distributed

解决方案


计算机很复杂。例如,您可能有四个物理核心,它们报告为八个逻辑核心。它们不是完全平行的。此外,您可能会强调机器的其他部分,例如内存层次结构。很难说。


推荐阅读