我正在使用NumPy来处理一些大型数据矩阵(大小约为50GB).我运行此代码的机器具有128GB的RAM,因此执行这种大小的简单线性操作不应该是内存方面的问题.
但是,当我在Python中计算以下代码时,我目睹了巨大的内存增长(超过100GB):
import numpy as np
# memory allocations (everything works fine)
a = np.zeros((1192953, 192, 32), dtype='f8')
b = np.zeros((1192953, 192), dtype='f8')
c = np.zeros((192, 32), dtype='f8')
a[:] = b[:, :, np.newaxis] - c[np.newaxis, :, :] # memory explodes here
Run Code Online (Sandbox Code Playgroud)
请注意,初始内存分配没有任何问题.但是,当我尝试使用广播执行减法操作时,内存增长到100GB以上.我一直认为广播会避免额外的内存分配,但现在我不确定是否总是如此.
因此,有人可以提供一些有关此内存增长发生原因的详细信息,以及如何使用更多内存有效的结构重写以下代码?
我在IPython Notebook中运行Python 2.7中的代码.
我有一个第三方库提供System.Collections.Generic.IReadOnlyCollection类型,以便与.NET 4.0应用程序兼容.但是,如果在.NET 4.5应用程序中链接此库,则会收到错误
解决这类冲突的一种方法是为要使用的库指定extern别名,并使用此别名消除我们引用的程序集的歧义.指定extern别名包括单击项目的References文件夹中的库引用,按F4显示属性网格,然后在"Aliases"字段中指定另一个名称.但是,问题是mscorlib没有出现在Visual Studio的参考列表中.尝试手动添加会导致错误
因此,考虑到上述所有问题,问题是:如何为mscorlib指定外部别名,因为我无法看到甚至没有将其添加到项目的引用列表中?
假设我有以下使用xUnit编写的测试用例:
public static IEnumerable<object[]> testValues = new List<object[]>
{
new object[] {new double?[] {0.0}, 0.0, 0.0},
};
[Theory]
[MemberData(nameof(testValues))]
public void Test1(double?[] values, double expectedQ1, double expectedQ3)
{
// Test code
}
Run Code Online (Sandbox Code Playgroud)
我怎么能在nUnit而不是xUnit中表达相同的单元测试?
注意:这里的主要问题似乎是使用了MemberData,到目前为止,我还没有找到一个nUnit等价物.在nUnit中表达这种单元测试用例的正确方法是什么?