如何为多进程制作 dworkers?

How to make dworkers for multiprocess?

我正在研究分布式集群计算。为了实现这样的系统,我正在尝试使用 python 库,即 dask.distriuted。但是有一个问题是 dworkers 不适用于多进程,意味着 2 或 3 个 dworkers,一起工作但不支持多进程库中支持的多个执行。

举个例子:

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

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

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

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

那是因为函数签名相同,只运行一次

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

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>