我有一个随机森林,并使用K折验证来尝试找到深度长度和其他一些参数的最佳值。
我正在运行QuadCore CPU,因此我试图弄清楚如何迭代max_depth = range(50,101)
,这样,当其中一个内核完成其max_depth
的森林安装时,它会自动获取下一个列表中的max_depth
。
还是最好将max_depth
分成4个相等的大小,然后手动进行4个处理?
答案 0 :(得分:0)
恕我直言,最好的解决方案是使用队列和手动创建流程。这样,您就可以完全控制流程。
max_depth
后执行随机森林的函数。将结果推送到输出队列中。max_depth
值都放入了输入队列启动进程后,每个进程将从输入队列中获取一个参数,然后执行RandomForest。一个过程完成后,它将结果放入另一个队列,并从输入队列中检索另一个参数。使用队列,您不必担心哪个进程首先完成等,因为队列是线程安全的,因此只有一个进程可以访问它们。其他任何人都将等待访问。您也不必担心max_depth
列表的最佳划分是什么。一旦一个过程完成,它将自动获得新的计算值。如果队列中没有任何内容,它将停止。
我通常比Pool
更喜欢这种类型的多处理,因为我有更多的控制权。 Here是一个小例子。