如何为多进程制作 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>
我正在研究分布式集群计算。为了实现这样的系统,我正在尝试使用 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>