我制作了一个python模块(使用boost :: python),它在某些时候会创建一些大型对象的数组(2D矢量)。对象的总大小就像几个Gb。当开始执行程序时,它会挂起/卡在数组初始化的位置:
// my_object.h
class my_object{
public:
my_object(n){ create a bunch of 2D arrays (double, int, etc.) of size n x n }
};
// extension.cpp
vector<my_object> arr(t,my_object(n)); // t is big, n is big
如果我减少参数t,尤其是n,程序运行良好。因此,似乎在python模块中初始化大型大对象的效率或可能性存在一些问题。顺便说一句,我有足够的内存来存储这么大的数组(在pbs脚本中保留~20 Gb或内存,这些都是集群计算),所以问题几乎不是因为内存(在这种情况下我得到明确的消息,它是足够的记忆)。我怎样才能克服这样的问题?先感谢您。