小编Mee*_*ies的帖子

我可以找出导致我的Python MemoryError的分配请求吗?

上下文

我的小Python脚本使用库来处理一些相对较大的数据.此任务的标准算法是动态编程算法,因此可能是"引擎盖下"的库分配了一个大型数组来跟踪DP的部分结果.实际上,当我尝试给它相当大的输入时,它会立即给出一个MemoryError.

最好不要深入挖掘库的深度,我想弄清楚是否值得在具有更多内存的不同机器上尝试此算法,或者尝试减少我的输入大小,或者如果它是丢失的原因我试图使用的数据大小.

当我的Python代码抛出时MemoryError,是否有一种"自上而下"的方式来调查我的代码试图分配的内存大小是什么导致了错误,例如通过检查错误对象?

python error-handling out-of-memory python-3.x

17
推荐指数
1
解决办法
330
查看次数

为什么析取赋值运算符| =不适用于bool向量?

如果我有一个,vector<bool> vec_bool那么我无法使用|=赋值运算符修改向量的内容.就是这条线

vec_bool[0] |= true;
vec_bool[0] |= vec_bool[1];
Run Code Online (Sandbox Code Playgroud)

给出编译错误,而行

bool a = false;
a |= true;
a |= vec_bool[0];
vec_bool[0] = vec_bool[0] | vec_bool[1];
vec_bool[0] = vec_bool[0] || vec_bool[1];

vector<int> vec_int(3);
vec_int[0] |= vec_int[1];
Run Code Online (Sandbox Code Playgroud)

不要.这是什么原因?

给出的错误(通过gcc)是:

TEST.CPP:21:17:错误:不对应的 '运营商| ='(操作数的类型是 '的std ::矢量::参考{又名的std :: _ Bit_reference}' 和 '布尔')

c++ assignment-operator

14
推荐指数
1
解决办法
857
查看次数

Clang 的“你的意思是……?”怎么说?变量名修正算法有效吗?

我正在使用 Clang 编译 C++ 代码。( Apple clang version 12.0.5 (clang-1205.0.22.11))。

如果您拼写错误变量,Clang 可以给出提示:

#include <iostream>

int main() {
    int my_int;
    std::cout << my_it << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
spellcheck-test.cpp:5:18: error: use of undeclared identifier 'my_it'; did you mean 'my_int'?
    std::cout << my_it << std::endl;
                 ^~~~~
                 my_int
spellcheck-test.cpp:4:9: note: 'my_int' declared here
    int my_int;
        ^
1 error generated.
Run Code Online (Sandbox Code Playgroud)

我的问题是:

Clang 使用什么标准来确定何时建议另一个变量?

我的实验表明它相当复杂:

  • 如果您可能指的是另一个类似命名的变量(例如int my_in;),它不会给出建议
  • 如果建议的变量的操作类型错误(例如尝试打印my_it.size()),则不会给出建议
  • 它是否给出建议取决于变量名称的重要比较:它允许删除和插入字符,并且较长的变量名称允许更多的插入/删除被视为“相似”。

c++ compiler-errors clang

5
推荐指数
1
解决办法
443
查看次数

通过父初始化程序以外的方式初始化子类的实例

我有一个Python类(它实际上不是我的,它来自一个包,所以我不想编辑这个).最小的例子(不切实际):

import os

class SuperClass:
    def __init__(self):
        # Do something, for example
        self.a = 0
        pass

    def from_file(filename):
        # Do something with the file,
        # use it to create superclass
        # instance obj. For example...
        obj = SuperClass()
        obj.a = os.stat(filename).st_size
        return obj
Run Code Online (Sandbox Code Playgroud)

现在我想创建这个超类的子类,它的初始化总是来自一个文件 - 也就是说,我想做类似的事情

class SubClass(SuperClass):
    def __init__(self, filename):
        self = SuperClass.from_file(filename)
Run Code Online (Sandbox Code Playgroud)

这不起作用(我没想到):我没有得到异常但是子类没有正确初始化.例如,如果SuperClass有一些实例值a,总是设置,那么

new_subclass_instance = SubClass('/filepath/file')
print(new_subclass_instance.a)
Run Code Online (Sandbox Code Playgroud)

会给一个AttributeError: type object 'SubClass' has no attribute 'a'.

如何使用from_file父类中的函数初始化?

python class subclass superclass

1
推荐指数
1
解决办法
135
查看次数