更快地复制对象(如deepcopy)?

2024-04-20 00:15:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python3中有一个类,它包含一些变量并表示一个状态。 在程序(模拟)过程中,我需要大量复制这个状态,这样我就可以改变它,仍然有以前的信息。你知道吗

问题是来自copy模块的deepcopy太慢。我最好在那个类中创建一个方法来复制一个对象,它将创建并返回一个新对象,并复制每个变量的值?注意:在对象内部还有一个3D列表。你知道吗

有没有别的解决办法?deepcopy实在太慢了,根据cProfile,它需要99%以上的执行时间。你知道吗

编辑:将3D列表和其他列表表示为numpy数组/矩阵,并在自定义复制函数中用numpy复制它们是更好的方法吗?你知道吗


Tags: 模块对象方法程序numpy信息列表过程
1条回答
网友
1楼 · 发布于 2024-04-20 00:15:10

对于未来有同样问题的人: 我所做的是在类中创建一个方法来手动复制信息。我没有重写deepcopy,也许那样会更干净,也许不会。你知道吗

我尝试过在2D和3D列表中使用和不使用numpy,但是在代码后面附加2个numpy数组要比生成2个列表的总和(对于我的特定程序,我确实需要这样做)花费更多的时间。你知道吗

所以我用了:

my_list = list(map(list, my_list)) # for 2D list
my_list = [list(map(list, x)) for x in my_list] # for 3D list

相关问题 更多 >