2016-12-08 53 views
2

我正在从事分布式集群计算。要实现这样的系统,我试图使用dask.distriuted的python库。但是存在一个问题,即dworkers不适用于多进程,意味着2个或3个dworkers一起工作,但不支持多处理lib中支持的多个执行。如何使dworkers进行多进程?

为例:

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

如果我在client.submit(testFun)。它会执行此功能无限次执行该功能,然后就再也回不来到下一个步骤。喜欢这个程序:

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

在这里,直到执行第一行它永远不会到下一行。 我想让多工处理器工作。我将如何做到这一点?

回答

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> 
+0

感谢现在运转。你能告诉我什么是你提交函数传递的参数,一个是函数名。而另一个是什么? –

+0

@SaikatKundu将附加参数传递给'testFun'。这使得两个任务的签名(函数名+参数)不同。 – Rolando