小编Ces*_*sar的帖子

NumPy中广播操作的内存增长

我正在使用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中的代码.

python memory numpy python-2.7

10
推荐指数
2
解决办法
1054
查看次数

如何为mscorlib创建一个extern别名

我有一个第三方库提供System.Collections.Generic.IReadOnlyCollection类型,以便与.NET 4.0应用程序兼容.但是,如果在.NET 4.5应用程序中链接此库,则会收到错误

  • 类型'System.Collections.Generic.IReadOnlyCollection'存在于'd:\ 3rdParty \net40\3rdPartyLib.dll'和'c:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\mscorlib.dll中"

解决这类冲突的一种方法是为要使用的库指定extern别名,并使用此别名消除我们引用的程序集的歧义.指定extern别名包括单击项目的References文件夹中的库引用,按F4显示属性网格,然后在"Aliases"字段中指定另一个名称.但是,问题是mscorlib没有出现在Visual Studio的参考列表中.尝试手动添加会导致错误

  • 无法添加对"mscorlib"的引用.构建系统已自动引用此组件.

因此,考虑到上述所有问题,问题是:如何为mscorlib指定外部别名,因为我无法看到甚至没有将其添加到项目的引用列表中?

.net c# .net-assembly visual-studio

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

使用MemberData将xUnit测试用例转换为nUnit

假设我有以下使用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中表达这种单元测试用例的正确方法是什么?

nunit xunit

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

标签 统计

.net ×1

.net-assembly ×1

c# ×1

memory ×1

numpy ×1

nunit ×1

python ×1

python-2.7 ×1

visual-studio ×1

xunit ×1