在python的Dask.multiprocessing中有一个共享对象



我正在使用dask库尝试创建多线程程序。但我在这里面临一个问题。 例:

from dask import compute, delayed
import dask.multiprocessing
arr = []
def add():
arr.append("a")
tasks = [delayed(add)(),delayed(add)()]
compute(*tasks, get = dask.multiprocessing.get)
print(arr)

这段代码的输出很简单[ ]..因为我使用的是多处理。如果我正在使用get = dask.threaded.get代码的输出将为 =['a', 'a']

我还需要使用多处理来实现多核上的实际并行性。

所以我的问题是.有没有办法使用 dask.multiprocessing 并且仍然能够访问共享对象?

在正常操作下,Dask 假设函数不依赖于全局状态。 你的函数应该使用输入和返回输出,并且不应该依赖于除给定信息之外的任何其他信息。

即使在使用线程调度程序时,您也可能要注意影响全局状态,因为该状态可能不是线程安全的。

相关内容

  • 没有找到相关文章

最新更新