这不是我第一次遇到这个问题,这真的让我烦恼.每当我使用Python subprocess
模块打开管道时,我只能communicate
使用它一次,因为文档指定:Read data from stdout and stderr, until end-of-file is reached
proc = sub.Popen("psql -h darwin -d main_db".split(),stdin=sub.PIPE,stdout=sub.PIPE)
print proc.communicate("select a,b,result from experiment_1412;\n")[0]
print proc.communicate("select theta,zeta,result from experiment_2099\n")[0]
Run Code Online (Sandbox Code Playgroud)
这里的问题是,第二次,Python并不开心.实际上,他决定在第一次沟通后关闭文件:
Traceback (most recent call last):
File "a.py", line 30, in <module>
print proc.communicate("select theta,zeta,result from experiment_2099\n")[0]
File "/usr/lib64/python2.5/subprocess.py", line 667, in communicate
return self._communicate(input)
File "/usr/lib64/python2.5/subprocess.py", line 1124, in _communicate
self.stdin.flush()
ValueError: I/O operation on closed file
Run Code Online (Sandbox Code Playgroud)
是否允许多次通信?
我做了一些研究,似乎Javascript和MIDI这些天并不顺利.谷歌说至少这样.
如本主题所述: 在javascript中生成MIDI,可以在Javascript或服务器端创建文件,并像播放普通文件一样播放.
但是,我真的希望能够发送个人midi事件,"直播",因为它将是一个持续的用户交互.我想我的计划B将是创建一个Java applet来实现这一点,但之后我的应用程序将不再是纯HTML5.
我也听说HTML5的音频支持目前并不出名,所以我也想知道,如果现在还没有解决方案,未来可能的结果是什么?
谢谢.
我想编写一个同时使用Javascript和HTML的应用程序作为用户界面.该应用程序不需要互联网连接,但需要访问用户的本地文件.
我的第一个想法是,由于访问本地文件的安全限制,这在浏览器中是不可能的.
我的第二个想法是尝试直接从C++使用webkit并使用Python而不是Javascript,但这似乎相当复杂,我觉得使用Qt过度使用.
我的第三个想法是使用签名的Java小程序来进行所有本地访问,但是我对此也不太确定.
关于我应该做什么的任何建议?
我正在将Python嵌入到我正在制作的C++库中.我希望用户能够以函数指针的形式传递C函数,PyObject* (fpFunc*)(PyObject*,PyObject*);
以便我可以在嵌入式Python中使用这些函数.
所以我有一个函数指针,我知道可以将这个函数作为模块的方法使用PyMethodDef
结构并将其传递给它Py_InitModule("module", ModMethods);
,从而获得一个PyObject* module
我可以轻松地从中获取函数的函数.
但是,我真正欣赏的是能够动态创建此功能,而不必每次都重新创建另一个模块.
我已经研究了Python文档,以及一些Python头文件,想到了一个没有真正成功的hacky方法...但我想知道是否有更传统的方法来做到这一点.
根据我的理解,每个函数都属于一个模块,甚至__builtin__
,所以我想我至少需要模块.
有关如何实现这一点的任何想法?
有些东西让我烦恼.
在非线程程序中,最好是使用本地静态变量(内部方法)还是静态类成员?
在这个例子中:
class C{
public:
C(){};
void foo();
};
void C::foo(){
static int bar = 0;
bar++;
printf("%d\n",bar);
}
Run Code Online (Sandbox Code Playgroud)
如果bar
单独使用它会被认为是一种不好的做法C::foo()
吗?
可能重复:
汇编程序什么时候比C快?
你好,
这纯粹是一个理论问题,因此,如果有一个"无限"时间来制作一个简单的程序,以及对C和汇编的高级知识,那么在汇编中做一些事情真的更好吗?将C编译成汇编(机器代码)时,"性能"会丢失吗?
根据性能我的意思是,现代C编译器在某些任务中做得不好,直接在Assembly中编程加速吗?
谢谢.
glBegin
/ glEnd
和每顶点绘图glVertex
我可以理解使用数组可以更快.
但是在哪里glLoadIdentity
?glMultMatrix
?glTranslate
?glRotate
?
为什么我们自己必须处理所有的矩阵内容?
我想我理解虚方法和vtable的概念,但是我不明白为什么将对象作为指针(或引用)传递并通过值传递它(将哪种方式丢弃vtable或其他东西)之间存在差异?
为什么会这样的工作:
Material* m = new Texture;
poly->setMaterial(m);
// methods from Texture are called if I keep carrying the pointer around
Run Code Online (Sandbox Code Playgroud)
而不是这个?:
Material m = Texture();
poly->setMaterial(m);
// methods from Material are called if I pass the value around
Run Code Online (Sandbox Code Playgroud) c++ polymorphism inheritance virtual-functions object-slicing
理想情况下,我希望能够将(非常重复的)C/C++代码添加到我的实际代码中,但是在编译时,代码可以来自蟒蛇脚本的stdout,就像使用宏一样.
例如,假设我想拥有依赖于给定类的公共属性的函数,能够在我的C++代码中编写以下内容将是一件幸事:
generate_boring_functions(FooBarClass,"FooBarClass.cpp")
Run Code Online (Sandbox Code Playgroud)
使用传统方法可行吗?或者我必须破解Makefile和临时源文件?
谢谢.
看来,如果我没有错,那么由于Javascript处理对象的方式,实现链表是不切实际或效率低下的.
我需要一个数据结构,在其中我可以轻松地执行2个操作(除了索引),最后附加并删除(弹出)给定索引处的对象.
是否使用Array
和"重新创建"每个删除操作的最佳解决方案?我想不会.
有任何想法吗?
我正在使用最新版本的Chrome(和Firefox)为WebGL(GLSL ES 1.0)编写片段着色器,我编写了一个迭代算法.
首先,我发现循环的长度受到严格限制的困难方式(doc说它必须在编译时可猜测,这意味着它必须是常数或非常接近).
另外,我必须编写一个(for
因为它是唯一一个必须根据标准实现的)循环,它可能很长但几乎每次都在结束之前中断.
现在,我注意到如果我设置了更高的最大数量,则着色器的编译和链接需要更多时间.所以,除非我错了,编译器会循环展开.
我不确定是否可以做任何事情,但我已经尝试了一些东西,编译器似乎也内联函数,即使在循环中调用.
我不觉得着色器花费一分钟来编译循环的大约一百次迭代是正常的.或者我做错了什么?片段着色器中的一百次迭代对于GPU来说太过分了吗?因为它在编译之后似乎运行得很好.
我试图在"纯粹的"Prolog中写出可逆关系(没有is
,剪切或类似的东西.是的,它是家庭作业),我必须承认我不知道如何.我没有看到任何创建这样的事情的过程.
我们被赋予"不可知"但可逆的算术关系(add,mult,equal,less,...),我们必须使用它们来创建这些关系.
现在我正在尝试通过创建关系来了解如何创建可逆函数,tree(List,Tree)
如果List
是二叉树的叶子列表则为true Tree
.
为了实现我试图创造这样的事情tree_size(Tree,N)
时,这是真正的关系Tree
有N
叶子.这是我天真的,不可逆转的关系:
tree_len(n(_,leaf,leaf),1).
tree_len(n(op,G,D),N) :-
tree_len(G,TG),
tree_len(D,TD),
add(TG,TD,N).
Run Code Online (Sandbox Code Playgroud)
我可以进行查询tree_len(some tree, N)
,但不是说tree_len(X,3)
,所以它不可逆.到目前为止,我已经尝试了一些事情,但我必须承认我感到气馁,因为我不知道在哪里寻找什么.有没有办法做到这一点?
我和我的朋友们想知道JVM在接口和纯抽象类之间是否真的存在差异,或者它是否真的是语法糖.
我真的不明白为什么会有区别,但可能不是那么牵强.
javascript ×4
c ×3
c++ ×3
python ×2
webgl ×2
arrays ×1
assembly ×1
clpfd ×1
gcc ×1
glsl ×1
html ×1
inheritance ×1
java ×1
jvm ×1
loops ×1
midi ×1
pipe ×1
polymorphism ×1
prolog ×1
python-c-api ×1
static ×1
subprocess ×1
variables ×1
webkit ×1