如何为多进程制作dworkers?

时间:2016-12-08 20:58:55

标签: ipython distributed-computing distributed dask

我正在开发分布式集群计算。为了实现这样的系统,我试图使用dask.distriuted的python库。但是存在一个问题,即dworkers不是用于多进程,意味着2或3个dworkers,它们协同工作但不支持多处理lib中支持的多个执行。

举个例子:

def testFun():
 while True:
  time.sleep(3)
  print('looping')

如果我在client.submit(testFun)中执行此函数。它将执行此函数无限次,然后它将永远不会进入下一步。喜欢这个节目:

client.submit(testFun)
client.submit(testFun)

这里直到执行第一行它永远不会到达下一行。 我想让那个dworker进行多处理。我该怎么做?

1 个答案:

答案 0 :(得分:1)

那是因为该函数具有相同的签名,只运行一次。

您可以通过生成的密钥来判断。参见:

In [5]: client.submit(testFun)
<Future: status: pending, key: testFun-a4102f4653c498f9fafc90003d87bd08>

In [6]: client.submit(testFun)
<Future: status: pending, key: testFun-a4102f4653c498f9fafc90003d87bd08>

试试这个

def testFun(x):
    while True:
        time.sleep(3)
        print('looping', x)
In [13]: client.submit(testFun, 1)
<Future: status: pending, key: testFun-afa640a088a357e5f8dd46c1937af3a7>

In [14]: client.submit(testFun, 2)
<Future: status: pending, key: testFun-98309530cb5b26d69131e54a521b8b40>