我正在学习 dask,我想生成随机字符串。但这仅在 import 语句位于函数内部f
时才有效。
这有效:
import dask
from dask.distributed import Client, progress
c = Client(host='scheduler')
def f():
from random import choices
from string import ascii_letters
rand_str = lambda n: ''.join(choices(population=list(ascii_letters), k=n))
return rand_str(5)
xs = []
for i in range(3):
x = dask.delayed(f)()
xs.append(x)
res = c.compute(xs)
print([r.result() for r in res])
这会打印出类似['myvDi', 'rZnYO', 'MyzaG']
. 这很好,因为字符串是随机的。
但是,这不起作用:
from random import choices
from string import ascii_letters
import dask
from dask.distributed import Client, progress
c = Client(host='scheduler')
def f():
rand_str = lambda n: ''.join(choices(population=list(ascii_letters), k=n))
return rand_str(5)
xs = []
for i in range(3):
x = dask.delayed(f)()
xs.append(x)
res = c.compute(xs)
print([r.result() for r in res])
这会打印出类似['tySQP', 'tySQP', 'tySQP']
的内容,这很糟糕,因为所有随机字符串都是相同的。
所以我很好奇我将如何分发大型非平凡代码。我的目标是能够将任意 json 传递给一个dask.delayed
函数,并让该函数使用其他模块(如 google 的ortools
. 有什么建议么?