我有一个输入数据流,它有交错的实数和虚数整数.将这些值转换为complex64值是我程序中最慢的操作.这是我目前的做法:
import numpy as np
a = np.zeros(1000000, dtype=np.int16)
b = np.complex64(a[::2]) + np.complex64(1j) * np.complex64(a[1::2])
Run Code Online (Sandbox Code Playgroud)
如果不进行C扩展或使用cython之类的东西,我能做得更好吗?如果我不能做得更好,那么使用像其中之一这样的技术最简单的方法是什么?
我有19个字符串需要验证为各种类型.当所有验证成功时,我想实例化一个表示电子表格行的类(其中列不是全部具有相同的类型).
当一个或多个字符串无法验证时,我希望在NonEmptyList中累积错误.
如果有12个或更少的项目,我可以使用| @ | 或申请12.如果我使用for表达式,它会快速失败并且不会发生累积.
当for表达式失败时,我可以对失败进行排序,但这意味着我循环两次.有没有办法使用scalaz将每个验证成功拉入变量(如果我使用for表达式来实例化类),同时累积所有失败?
有没有办法在保留文件的时间戳的同时备份mercurial存储库?
现在,我正在使用hg clone将存储库复制到临时目录,备份程序从那里获取文件.我没有将备份程序直接指向存储库,因为我不希望它在备份发生时更改(来自提交).
问题是将hg clone所有文件的时间戳更改为当前时间,因此备份程序(我无法更改)认为所有内容都已被修改.
我正在使用64位Windows 7 Pro和Visual Studio 2010 Pro.
我正在尝试分配和使用大于4 GB的缓冲区(用于高数据速率数据捕获).
将缓冲区分配和写入字节向量可以正常工作.将缓冲区分配为字节数组工作正常,但写入该数组会很快崩溃.(打印的最后一条消息是"缓冲区已分配".)
注释掉矢量部分并不能解决问题.
以下是我的测试程序:
#include <iostream>
#include <vector>
#include <BaseTsd.h>
using namespace std;
int main() {
const ULONG64 BUF_SIZE = 4 * 1024ULL * 1024ULL * 1024ULL;
{
vector<unsigned __int8> v(BUF_SIZE);
cout << "vector allocated" << endl;
for (ULONG64 i = 0; i < BUF_SIZE; ++i) {
v[i] = 0xff;
}
cout << "vector written" << endl;
}
{
unsigned __int8* buffer = new unsigned __int8[BUF_SIZE];
cout << "buffer allocated" << endl;
for …Run Code Online (Sandbox Code Playgroud) 我有一个包含Python代码的字符串,我可以将其评估为Python,literal_eval如果它只有OrderedDict替换的实例{}.
我正在尝试使用ast.parse和ast.NodeTransformer进行替换,但是当我捕获节点时nodetype == 'Name' and node.id == 'OrderedDict',我找不到节点对象中的参数列表,以便我可以用Dict节点替换它.
这甚至是正确的方法吗?
一些代码:
from ast import NodeTransformer, parse
py_str = "[OrderedDict([('a', 1)])]"
class Transformer(NodeTransformer):
def generic_visit(self, node):
nodetype = type(node).__name__
if nodetype == 'Name' and node.id == 'OrderedDict':
pass # ???
return NodeTransformer.generic_visit(self, node)
t = Transformer()
tree = parse(py_str)
t.visit(tree)
Run Code Online (Sandbox Code Playgroud) 首先,相关应用程序始终位于同一处理器上,并且编译器始终为 gcc,因此我不担心位域不可移植。
gcc 布局位字段,使得第一个列出的字段对应于字节的最低有效位。因此,在以下结构中,a = 0,b = 1,c = 1,d = 1,您将得到一个字节值 e0。
struct Bits {
unsigned int a:5;
unsigned int b:1;
unsigned int c:1;
unsigned int d:1;
} __attribute__((__packed__));
Run Code Online (Sandbox Code Playgroud)
(实际上,这是C++,所以我说的是g++。)
现在假设我希望a是一个六位整数。
现在,我明白为什么这不起作用,但我编写了以下结构:
struct Bits2 {
unsigned int a:6;
unsigned int b:1;
unsigned int c:1;
unsigned int d:1;
} __attribute__((__packed__));
Run Code Online (Sandbox Code Playgroud)
将b、c和d设置为 1,将a设置为 0 会产生以下两个字节:
c0 01
Run Code Online (Sandbox Code Playgroud)
这不是我想要的。我希望看到这个:
e0 00
Run Code Online (Sandbox Code Playgroud)
有没有办法指定一个结构,该结构在第一个字节的最高有效位中具有三位,并且在第一个字节的五个最低有效位和第二个字节的最高有效位中具有六个位?
请注意,我无法控制这些位的布局位置:它是由其他人的接口定义的位布局。
根据useradd联机帮助页,1000以下的UID通常保留给系统帐户.
我正在开发一个将作为自己的用户运行的服务.我知道可以找到众所周知的端口/etc/services.
有没有一个地方我可以找到那里众所周知的UID?我想避免与其他人的UID崩溃.
我有一个长期运行的C++程序,通常用gcc(g ++)编译.我使用valgrind来验证没有内存泄漏,所以我不是在寻找泄漏检测器.
但是,我关注的是临时缓冲区/对象上的内存碎片和不必要的新/删除对.
有没有办法记录所有对new的调用(即使它们发生在STL容器内),提供堆栈跟踪以便我可以在代码中查找它们?我尝试过mtrace,但这只适用于C++ - 它最终说当我查找负责的代码行时,所有分配都发生在全局新的分配器中.不知怎的,valgrind的memcheck几乎可以做我想要的,因为它显示了内存分配的堆栈跟踪.不幸的是,它们似乎只为分配而不匹配解除分配.
如何让scons使用Clang和libc ++?在我传递给Environment的任何标志中放入"-stdlib = libc ++"会导致未定义的引用错误,如下所示:
hello.o: In function `main':
hello.cpp:(.text+0xc): undefined reference to `std::__1::cout'
hello.o: In function `std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)':
Run Code Online (Sandbox Code Playgroud) 我正在使用C++,我有以下结构:
struct ArrayOfThese {
int a;
int b;
};
struct DataPoint {
int a;
int b;
int c;
};
在内存中,我想在每个DataPoint的末尾有一个或多个ArrayOfThese元素.每个DataPoint并不总是具有相同数量的ArrayOfThese元素.
因为我有一些荒谬的DataPoints要组装然后通过网络流,我希望我的所有DataPoints和它们的ArrayOfThese元素是连续的.为固定数量的ArrayOfThese元素浪费空间是不可接受的.
在C中,我会在DataPoint的末尾创建一个声明为的ArrayOfThese d[0];元素,为我所拥有的多个ArrayOfThese元素分配一个DataPoint加上足够的额外字节,并使用虚拟数组索引它们.(当然,ArrayOfThese元素的数量必须在DataPoint的字段中.)
在C++中,正在使用placement new和相同的0-length数组破解正确的方法?如果是这样,放置新保证后续从同一内存池调用new会连续分配吗?
在编写绘制科学数据图像的代码时,我一直遇到的问题如下:
给定一些浮点数据,将这些数据拟合到槽(1维情况)或网格(2维情况)中,使得每个数据位于其值最接近基准值的槽或网格条目中.
不是槽/网格值均匀间隔的情况.
例如,将以下数据放入以下插槽中:
数据:0.1,0.6,4.23,5.1,7.0
槽:0.0,0.4,0.6,1.2,5.0,10.0
实际上,有比插槽更多的数据.因此,拥有一个将缓存中的插槽保持在一起的数据结构将是有益的.
什么是好的是像树或哈希表,在那里你向树询问与键对应的值,但是通过草率比较产生最接近的匹配.
这样的野兽存在吗?
(现在,我只是进行了大量比较的循环.看起来我至少可以通过插槽使用二进制搜索来做得更好,不过......)
在对一组具有类型E [String,A](其中A是多种类型)的Eithers进行匹配之后,我想将左侧的任何字符串累积到列表中.
(a, b, c, d, e) match {
case (Right(a), Right(b), Right(c), Right(d), Right(e)) => {
"All good, use a, b, c, d, and e!"
}
case anythingElse => {
val strings = accLefts(anythingElse)
doSomethingWithStrings(strings)
}
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试.productIterator.toList使用元组,我最终会使用List [Any].如果我单独处理每个失败的案例(权利和左派的组合),我最终得到一个指数的案例陈述.
如何在那里获得一个List [[String,Any]],以传递给我的accLefts电话?或者我应该做一些比赛以外的事情?
我正在使用具有宏循环输出类型的库中的函数:
STRANGE_MACRO(something) the_function(Type1 t, Type2 u);
Run Code Online (Sandbox Code Playgroud)
我想定义一个变量,它将获取此返回值,而不首先声明a Type1或a Type2.
我希望这样的东西能起作用:
decltype(the_function(Type1, Type2)) return_value;
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我可以在不知道宏评估的内容而不首先声明几个变量的情况下这样做吗?