我编写了一个频繁模式增长算法,并计算出在构建了一个相当大的完整树之后,最重的计数部分可以并行化。你知道吗
FP-Tree是一种非二叉树结构,其中相同的名称可以出现在不同的节点上。每个节点都连接到下一个同名节点,因此不仅可以从根节点遍历树,还可以从连接所有同名节点的链接路径的一侧遍历树。从每个这样的节点遍历回根节点,同时构建和计算该路径的可能组合。你知道吗
通过将名字拆分,我想我可以对计数部分进行多重处理,因为算法只遵循树结构中的某个路径,在不改变它的情况下进行计数和合并。你知道吗
但现在我遇到了一个路障,我不明白多重处理的一个意外错误。以下面的示例代码为例。它有一个名为link
的类,该类基本上只获取自身另一个实例上的链接。我构建了两个具有给定深度的类链,即每个link.link
变量包含下一个link
实例,而第一个是None
。你知道吗
import multiprocessing as mpr
class link:
def __init__(self,link=None):
self.link = link
def main(maxRange):
nproc = 2
L = []
for i in range(nproc):
L.append(link())
for j in range(maxRange):
L[i] = link(L[i])
LL = [L[:1],L[1:]]
pool = mpr.Pool(processes=nproc)
pool.map(test,LL)
pool.close()
pool.join()
return
def test(l):
pass
if __name__ == "__main__":
maxRange = 328
main(maxRange)
一旦maxRange
的值达到328,我就会得到这个错误:
File "E:/PythonDir/Diverses/temp.py", line 896, in main
pool.map(test,dfl)
File "C:\Users\...\AppData\Local\Continuum\Anaconda2\lib\multiprocessing\pool.py", line 251, in map
return self.map_async(func, iterable, chunksize).get()
File "C:\Users\...\AppData\Local\Continuum\Anaconda2\lib\multiprocessing\pool.py", line 567, in get
raise self._value
RuntimeError: maximum recursion depth exceeded while getting the str of an object
为什么多处理对包含对其他对象的引用的对象有问题?你知道吗
有办法解决这个问题吗?你知道吗
为什么是328?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐