小编Cha*_*esB的帖子

从__future__导入with_statement需要哪个python版本?

使用python 2.6.5,我可以在with不调用的情况下使用该语句from __future__ import with_statement.如何在with不专门导入Python的情况下判断哪个版本的Python支持__future__

python python-import

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

OpenMP:Visual C++ 2008和2010之间的巨大性能差异

我正在运行一个摄像头采集程序,对采集的图像进行处理,我正在使用简单的OpenMP指令进行处理.所以基本上我等待来自相机的图像,然后处理它.

迁移到VC2010时,我看到了非常奇怪的性能问题:在VC2010下,我的应用程序占用了近100%的CPU,而在VC2008下只占用了10%.

如果我只对处理代码进行基准测试,那么VC2010和VC2008之间没有区别,使用采集功能会产生差异.

我已经将重现问题所需的代码减少到一个简单的循环,执行以下操作:

  for (int i=0; i<1000; ++i)
  {
    GetImage(buffer);//wait for image
    Copy2Array(buffer, my_array);

    long long sum = 0;//do some simple OpenMP parallel loop
    #pragma omp parallel for reduction(+:sum)
    for (int j=0; j<size; ++j)
      sum += my_array[j];
  }
Run Code Online (Sandbox Code Playgroud)

这个循环占2008年CPU的5%,2010年占70%.

我做了一些分析,这表明在2010年大部分时间花在了OpenMP上 vcomp100.dll!_vcomp::PartialBarrierN::Block

我还做了一些并发性分析:

在2008年,处理工作分布在3个工作线程上,由于处理时间远远低于图像等待时间,所以它们非常活跃

相同的线程出现在2010年,但它们都被该PartialBarrierN::Block功能100%占用.由于我有四个核心,他们正在吃75%的工作,这大致是我在CPU职业中看到的.

所以看起来OpenMP和Matrox采集库(专有)之间存在冲突.但它是VS2010或Matrox的错误吗?有什么我能做的吗?使用VC++ 2010对我来说是必须的,所以我不能坚持使用2008.

十分感谢

状态更新

正如DeadMG所建议的那样,使用新的并发框架会导致40%的CPU.分析它显示时间花在处理上,因此它没有显示我在OpenMP中看到的错误,但在我的情况下性能比OpenMP差.

状态更新2

我已经安装了最新英特尔C++的评估版.它显示完全相同的性能问题!!

我交叉发布到MSDN论坛

状态更新3

在Windows 7 64位和XP 32位上测试,结果完全相同(在相同的机器上)

c++ performance openmp visual-studio-2010

25
推荐指数
2
解决办法
8726
查看次数

如何在python中将负整数值转换为十六进制

我使用python 2.6

>>> hex(-199703103)
'-0xbe73a3f'

>>> hex(199703103)
'0xbe73a3f'
Run Code Online (Sandbox Code Playgroud)

正负值是一样的吗?

当我使用calc时,值为FFFFFFFFF418C5C1.

python hex integer negative-number

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

如何使用github API进行ssh身份验证?

在通过命令行访问GitHub API时是否有某种方法可以使用基于ssh的身份验证(例如,通过curl等?).

FWIW,我尝试了以下的许多变体(改变了我指定我的公共ssh密钥文件的方式),但在每种情况下我仍然提示我输入密码:

% curl --pubkey ~/.ssh/id_rsa.pub --user yrstruly https://api.github.com/user/repos
Run Code Online (Sandbox Code Playgroud)

ssh curl github github-api

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

如何插入std :: map?

是否有一个std迭代器我可以使用std算法将元素插入到std :: map中(例如std :: copy)?

我需要一个容器来将一个对象链接到一个字符串,我想到了使用std :: map.有更好的容器吗?忘了说 - 需要对物品进行分类.

c++ stl

24
推荐指数
3
解决办法
3万
查看次数

吸气剂和二传手风格

(暂不回答你应该拥有它们的问题.)

我一直希望只使用函数重载为getter和setter提供相同的名称.

int rate() { return _rate; }      
void rate(int value) { _rate = value; }

// instead of     
int getRate() { return _rate; }      
void setRate(int value) { _rate = value; }

// mainly because it allows me to write the much cleaner     
total( period() * rate() );    
// instead of      
setTotal( getPeriod() * getRate() );
Run Code Online (Sandbox Code Playgroud)

当然我是对的,但我想知道图书馆作家是否有任何理由?

c++ oop getter-setter

23
推荐指数
4
解决办法
1万
查看次数

如何撤消git update-index?

我只是做了以下操作,以便在我的localhost和我的生产环境中保留config.php文件的不同副本:

$ git update-index --assume-unchanged application/config/config.php
Run Code Online (Sandbox Code Playgroud)

不幸的是,我并没有完全写入config.php文件,我应该和我需要扭转这种,这样我可以做出改变,提交它,然后重新忽略该文件.

如何撤消git update-index命令?

git github gitignore git-index

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

Git - 错误:RPC失败; 结果= 22,HTTP代码= 401致命:远程端意外挂断

我正在使用ubuntu 11.10机器.我安装了1.7.7.1版本的git.我正在使用git-cola推送和拉取我的代码,我能够提交并成功推送我的更改.

现在,我已经更换了我的机器,我的新系统具有相同的上述配置.(Ubuntu 11.10机器和git版本1.7.7.1).

在新机器上,我有关于git push的问题.我尝试推送代码时收到以下错误消息:

error: RPC failed; result=22, HTTP code = 401
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

在互联网上,我发现它可能是由于以下任何原因之一:

  • 错误的git用户密码(在我的情况下,我要求我使用正确的密码来推送代码.因为,即使现在我成功了,当我从旧系统推送工作区代码(使用相同的密码!).但是问题只来自我的新系统.
  • 要使用以下命令增加缓冲区大小:

    git config --system http.postBuffer 52428800

我试过这个,但没有运气.甚至试图增加我的缓冲区大小超过52428800,但仍然是同样的错误.

坚持这个问题.任何人都可以建议我一个解决方案.

谢谢.

git git-remote

23
推荐指数
3
解决办法
4万
查看次数

为什么在C中的2个文件中无法定义变量两次

为什么我不能拥有一个; 在2个C文件中.我打算将两者结合起来制作可执行文件.我从经验中知道我不能,但我想找到标准C99所说的位置并密封我的理解.

我正在阅读http://www.open-std.org/jtc1/sc22/wg...docs/n1256.pdf中的 ISO C99标准.它在第42页说:

6.2.2识别者的联系

1可以通过一个称为连接的过程,在不同的范围或相同的范围内多次声明一个标识符来引用同一个对象或函数.有三种链接:外部,内部和无.

2在构成整个程序的翻译单元和库的集合中,具有外部链接的特定标识符的每个声明表示相同的对象或功能.在一个翻译单元内,具有内部链接的标识符的每个声明表示相同的对象或功能.没有链接的标识符的每个声明表示唯一的实体.

3如果对象或函数的文件范围标识声明包含存储类指定静态,则标识符具有内部链接.

4对于在存储类规范外部声明的标识符,在该范围内可以看到该标识符的先前声明,如果先前声明指定内部或外部链接,则后面声明中标识符的链接与在先前声明中指定的联系.如果没有先前的声明可见,或者如果先前的声明没有指定链接,则标识符具有外部链接.

5如果函数的标识符声明没有存储类规范,则其链接的确定就像是使用存储类指定器extern声明的.如果对象的标识符声明具有文件范围且没有存储 - 特定的,它的联系是外在的.

看完之后看起来如果我声明一个变量就像说int a; 在2个源文件中.然后根据规则5和4都有外部链接,然后根据规则2,两者都应该引用同一个对象.那为什么编译器会产生问题.在标准中,暗示我们不能在2个源文件中声明这样,这应该抛出编译错误.首先,在标准中,它表示int a是一个定义,然后它表示2个定义实例是不可接受的.我知道我的经验是不允许的,但如果我能在标准中找到并密封我的理解,那对我来说非常有用.

请将以下标准的摘录与此规则相结合?或者我错过了胶水?:

声明规定了一组标识符的解释和属性.标识符的定义是对该标识符的声明: - 对于一个对象,导致为该对象保留存储; - 用于功能,包括功能体; - 对于枚举常量或typedef名称,是标识符的(唯一)声明.

正如5.1.1.1中所讨论的,预处理后的程序文本单元是一个翻译单元,它由一系列外部声明组成.这些被描述为"外部",因为它们出现在任何功能之外(因此具有文件范围).正如6.7中所讨论的那样,一个声明也会导致为一个对象或由标识符命名的函数保留存储,这是一个定义.

外部定义是外部声明,它也是函数(除了内联定义)或对象的定义.如果在表达式中使用了使用外部链接声明的标识符(除了作为sizeof运算符的操作数的一部分,其结果是整数常量),整个程序中的某个地方应该只有一个外部定义用于标识符; 否则,不得超过一个.

谢谢.

c standards iso compilation

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

完整日历的微小版本

我希望有人可以告诉我如何获得一个非常小的版本的FullCalendar(或类似的东西),它将做一个没有标题的小部件大小日历,只是带有可以点击的事件的日期的彩色块.我在wordpress网站上使用fullcalendar很棒,但所有谷歌日历小部件真的很糟糕!

jquery fullcalendar

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