我正在开发分布式集群计算。为了实现这样的系统,我试图使用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进行多处理。我该怎么做?
答案 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>