小编Yan*_*ang的帖子

Python子进程在接收stdin EOF时会遇到神秘的延迟

我将我在应用程序中看到的问题减少到下面的测试用例中.在此代码中,父进程同时生成2(您可以生成更多)子进程,这些子进程通过stdin从父进程读取大消息,休眠5秒,然后回写一些内容.但是,在某处发生了意外的等待,导致代码在10秒内完成,而不是预期的5.

如果设置verbose=True,你可以看到分散子进程正在接收大部分消息,然后等待3个字符的最后一个块 - 它没有检测到管道已经关闭.此外,如果我只是不对第二个进程(doreturn=True)做任何事情,第一个进程永远不会看到EOF.

有什么想法发生了什么?再往下是一些示例输出.提前致谢.

from subprocess import *
from threading import *
from time import *
from traceback import *
import sys
verbose = False
doreturn = False
msg = (20*4096+3)*'a'
def elapsed(): return '%7.3f' % (time() - start)
if sys.argv[1:]:
  start = float(sys.argv[2])
  if verbose:
    for chunk in iter(lambda: sys.stdin.read(4096), ''):
      print >> sys.stderr, '..', time(), sys.argv[1], 'read', len(chunk)
  else:
    sys.stdin.read()
  print >> sys.stderr, elapsed(), '..', sys.argv[1], 'done reading'
  sleep(5)
  print msg …
Run Code Online (Sandbox Code Playgroud)

python subprocess pipe

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

多处理Pool.imap坏了吗?

我已经尝试了python2.6 Ubuntu包中包含的多处理(__version__表示0.70a1)和最新的PyPI(2.6.2.1).在这两种情况下我都不知道如何正确使用imap - 它会导致整个解释器停止响应ctrl-C(虽然地图工作正常).pdb显示next()挂在条件变量wait()调用中IMapIterator,所以没有人唤醒我们.任何提示?提前致谢.

$ cat /tmp/go3.py
import multiprocessing as mp
print mp.Pool(1).map(abs, range(3))
print list(mp.Pool(1).imap(abs, range(3)))

$ python /tmp/go3.py
[0, 1, 2]
^C^C^C^C^C^\Quit
Run Code Online (Sandbox Code Playgroud)

python multiprocessing

3
推荐指数
2
解决办法
2788
查看次数

调用transform()时是否可以在名称中保留空格?

调用transform()时,有没有办法在data.frame的列名中保留空格?目前他们受到了威胁:

> transform(data.frame('a b'=1, check.names=F), `c d`=`a b`)
  a.b c.d
1   1   1
Run Code Online (Sandbox Code Playgroud)

r

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

插入符 trainControl 中的回测或自定义拆分?

有什么方法可以train()使用数据的自定义训练/测试分区来运行吗?我对回测时间序列数据感兴趣(当传统的重采样/CV/等不合适/泄漏时)。即,如果数据按时间从 1...N 排序,那么我会在某个截止值之前重复训练数据,以预测截止值之后的数据(直到某个滑动窗口大小)。我无法确定如何在利用插入符号的其余部分的同时实现这一点train()。预先感谢您的任何提示。

r

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

确定事件处理程序在DOM元素上消失的原因

(在Chrome中)是否有一种简单的方法可以确定何时从元素中删除事件处理程序(用于单击)?我的事件处理程序神秘地消失了,但我不确定是否有一种快速简便的方法可以暂停或获得堆栈跟踪/异常.

javascript jquery events google-chrome

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

使用URL过滤器/在某些(非父)目录下递归wget?

是否可以从http://host/foo/bar/baz/index.cgi?page = 1开始并递归获取http:// host/foo /下的任何内容?(无法从http:// host/foo /开始,因为那不是一个有效页面.)我查看了各种选项来控制wget递归提取,例如--no-parent和--include-directories,但是我似乎无法找到完成上述操作的选项,例如一个简单的URL子字符串过滤器.

wget

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

在ggplot2中,如何使切面图具有最小高度并共享相同的刻度?

我正在制作一个像这样的刻面情节:

在此输入图像描述

这完成了:

df = data.frame(val=rnorm(2005), class=c(rep(c('a','b'), 1000), rep('c', 5)))
qplot(val, ..count.., data=df, geom='density', fill=I('black')) +
  opts(strip.text.y = theme_text()) +
  # scale_y_continuous(breaks=seq(0, 999, by=50)) +
  facet_grid(class ~ ., scale = "free", space = "free")
Run Code Online (Sandbox Code Playgroud)

我故意确实希望小平面的大小不同(只占用尽可能多的垂直空间)但保持相同的比例.

现在,这个情节存在一些问题:

  • 我想在每个方面施加一个最小高度,这样你至少可以看到正确的标签文字,并将显示识别为空密度图 - 目前,如果我不知道我是如何生成这个情节的,我绝对不会已经猜到了底部的神器是什么.

  • 虽然小平面具有相同的比例,但y轴不共享相同的网格/标记.我可以通过取消注释注释行来强制它们共享相同的网格,但后来我手动计算这个 - 有没有办法在任何密度图中使用最粗网格?

提前感谢您的任何答案.

plot r ggplot2

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

生成小的 Windows 二进制文件

在开发和部署本机 Windows 应用程序时,我经常需要先安装运行时才能运行我的二进制文件,或者将库与我的二进制文件静态链接。例如,在使用 Visual Studio 2008 构建“Win32 控制台”项目后,尝试在新的 Windows 7 映像上运行该程序会导致:

应用程序无法启动,因为其并行配置不正确。请查看应用程序事件日志或使用命令行 sxstrace.exe 工具获取更多详细信息。

在 StackOverflow上的其他帖子中已经提出了这样的问题。

如何开发不需要目标操作系统上尚不存在的运行时的应用程序(即不需要安装可再发行包或私有/共享并行程序集)?如何避免使用 msvc[mpr]90.dll 而只使用 \windows\system32*.{dll,sys} 中的 Windows API?

我正在考虑来自演示场景的代码行,但这通常不可用。

windows winsxs

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

使用string和istream_iterator的C++编译错误

在尝试编译以下内容时:

#include <string>
#include <iterator>
#include <iostream>
using namespace std;
int main() {
  string s(istream_iterator<char>(cin), istream_iterator<char>());
  return s.size();
}
Run Code Online (Sandbox Code Playgroud)

g ++ 4.4.1给了我:

main.cc: In function ‘int main()’:
main.cc:6: error: request for member ‘size’ in ‘s’, which is of non-class type ‘std::string(std::istream_iterator<char, char, std::char_traits<char>, int>, std::istream_iterator<char, char, std::char_traits<char>, int> (*)())’
Run Code Online (Sandbox Code Playgroud)

根据libstdc ++ docs,string有一个ctor,它接受一个开始/结束迭代器对.为什么我会收到此错误?

c++ string iterator istream-iterator

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