python - 多处理管理器酸洗失败
问题描述
我正在为学校作业实施随机森林算法,以便使用多处理使其更快,其中每个进程创建一棵树,这些树被限制在一定的深度,比如 200 或 500。
这些树存储在一个定义如下的字典中:
manager = multiprocessing.Manager()
return_dict = manager.dict()
当我运行深度为 200 的算法时,它工作得很好,但在 500 时,多处理库会产生错误:
Traceback (most recent call last):
File "C:\Users\agust\AppData\Local\Programs\Python\Python38\lib\multiprocessing\process.py", line 315, in _bootstrap
self.run()
File "C:\Users\agust\AppData\Local\Programs\Python\Python38\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\agust\PycharmProjects\tarea2\random_forest.py", line 27, in id3_aux
return_dict[index] = nodo_res
File "<string>", line 2, in __setitem__
File "C:\Users\agust\AppData\Local\Programs\Python\Python38\lib\multiprocessing\managers.py", line 834, in _callmethod
conn.send((self._id, methodname, args, kwds))
File "C:\Users\agust\AppData\Local\Programs\Python\Python38\lib\multiprocessing\connection.py", line 206, in send
self._send_bytes(_ForkingPickler.dumps(obj))
File "C:\Users\agust\AppData\Local\Programs\Python\Python38\lib\multiprocessing\reduction.py", line 51, in dumps
cls(buf, protocol).dump(obj)
RecursionError: maximum recursion depth exceeded while pickling an object
如果我理解正确,它不能腌制这棵树,因为它太深了。有没有办法增加酸洗的递归限制,或者以不同的方式存储树木来防止这个问题?
解决方案
推荐阅读
- c++ - C++ - 为什么这个带有函数指针参数的候选模板会被忽略?
- amazon-web-services - 从单独 VPC 中的 EC2 实例访问 RDS
- angular - 在泛型方法上使用标头时需要创建自定义 Observable
- javascript - jQuery俄罗斯方块应用程序,游戏结束问题
- ruby - 检测嵌套数组是否包含相似元素
- angularjs - 访问量角器中表格第一行的第一列
- google-sheets - 第 1 列的最大值,其中第 2 列的值匹配某些条件
- wordpress - 布局问题 Wordpress 和 WPBakery
- web2py - 如何将 ondelete 函数重定向到页面要求输入密码,然后返回 SQLFORM.grid 页面?
- c++ - 使用 Intel Pin Tool 访问程序的全局变量