使用multiprocessing.Pool访问类字段

时间:2016-11-25 18:25:06

标签: python multiprocessing

我有一个有向图,我必须找到从给定节点集传递的最短路径。为此,我正在寻找这个集合的排列,并且对于每个集合,我计算总和每对节点之间的最短路径的长度。我有一个变量计算到目前为止发现的最短排列和长度。

在我必须处理10个节点之前,我设法检查1s中的所有排列,之后出现了瓶颈,因此我想使用multiprocessing.Pool()。

问题是我必须读取和编写调用Pool.imap的类的变量。

这是我在没有多处理/多线程的情况下使用的代码。

此代码包含在类Area的createRoute(self)方法中。

#This returns a list of nodes as integers
binsToEmpty = self.calculateBinsToEmpty() 

minLength = float("inf")
minPath = None

allPermutationsOfPaths = permutations(binsToEmpty)

for p in allPermutationsOfPaths:
    readElem = iter(p)
    next(readElem)

    length = 0
    for a,b in izip(p, readElem):
        if length < minLength:
            #getShortestLength returns an integer
            length += self.getSorthestLength(a._id, b._id)
        else:
            break

    #Every path starts and ends at node 0 which is not included in the permutation        
    length += self.getSorthestLength(0, p[0]._id)
    length += self.getSorthestLength(p[-1]._id, 0)

    if length < minLength:
        minLength = length
        minPath = p

我试图从类似的问题中找出解决方法,但我还没有理解如何实现它。

0 个答案:

没有答案