Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中拥有共享对象';多重处理_Python_Multiprocessing_Dask - Fatal编程技术网

在python中拥有共享对象';多重处理

在python中拥有共享对象';多重处理,python,multiprocessing,dask,Python,Multiprocessing,Dask,我正在使用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) 此代码的输出只是

我正在使用
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假设函数不依赖于全局状态。您的函数应该使用输入并返回输出,并且不应该依赖于给定信息以外的任何其他信息


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

可能重复@ppperry建议的问题是关于python的多处理库中处理问题的方式。我想问一下达斯克图书馆的情况。两者都有完全不同的实现方式。所以你是说没有办法?你可以看看的一些更先进的技术的底部。但一般来说,没有办法做到你所要求的。当您跨进程或机器并行化时,您必然会失去对共享状态的访问。