小编Ada*_*dam的帖子

如何使用Pythons timeit计算代码段以测试性能?

我有一个python脚本,它应该正常工作,但我需要编写执行时间.我用谷歌搜索了我应该使用timeit但我似乎无法让它工作.

我的Python脚本如下所示:

import sys
import getopt
import timeit
import random
import os
import re
import ibm_db
import time
from string import maketrans
myfile = open("results_update.txt", "a")

for r in range(100):
    rannumber = random.randint(0, 100)

    update = "update TABLE set val = %i where MyCount >= '2010' and MyCount < '2012' and number = '250'" % rannumber
    #print rannumber

    conn = ibm_db.pconnect("dsn=myDB","usrname","secretPWD")

for r in range(5):
    print "Run %s\n" % r        
    ibm_db.execute(query_stmt)
 query_stmt = ibm_db.prepare(conn, update)

myfile.close()
ibm_db.close(conn)
Run Code Online (Sandbox Code Playgroud)

我需要的是执行查询并将其写入文件所需的时间 …

python testing timeit database-tuning

140
推荐指数
6
解决办法
16万
查看次数

负无穷大

我试图弄清楚如何将负无穷大的值赋给浮点数或双变量.似乎包括标准库限制,我可以获得无穷大表示,并且我知道(非常肯定)在前面添加一个减号(-infinity)可能会导致我在IEEE754浮点中寻找的值标准(因为0x7FFFFFFF可能会导致0xFFFFFFFF),但我甚至不确定,更不用说可能存在的其他标准(如果有的话).我发现它真的,非常不专业和依赖于实现.

当然,有没有一种方法可以独立获得负无限平台和实现的价值,否则我也可以使用#define,每个人都喜欢预处理.

c++ numeric-limits

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

如何将矢量<bool>归零?

我有一个vector<bool>,我想把它归零.我需要大小保持不变.

通常的方法是迭代所有元素并重置它们.但是,vector<bool>是一个特别优化的容器,根据实现,每个元素只能存储一位.有没有办法利用这个来有效地清除整个事物?

bitset,固定长度的变体,具有该set功能.是否vector<bool>有类似的东西?

c++ vector

23
推荐指数
6
解决办法
6991
查看次数

如何旋转matplotlib注释以匹配一条线?

有一个带有不同斜率的几条对角线的图.我想用一个与线条斜率相匹配的文本标签来注释这些线条.

像这样的东西:

注释行

有没有一种强有力的方法来做到这一点?

我已经尝试了旋转参数textannotate旋转参数,但这些参数都是屏幕坐标,而不是数据坐标(即x无论xy范围如何,它都始终在屏幕上呈度数).我的x和y范围相差几个数量级,显然,明显的斜率受视口大小和其他变量的影响,因此固定度旋转不起作用.还有其他想法吗?

matplotlib

20
推荐指数
4
解决办法
8507
查看次数

从C++调用Cython函数

我有一个C++库,它有一个Python包装器(用SWIG编写).该库允许执行小的用户定义代码(回调),例如向量上的元素操作.即,而不只是一个+你可以做任意二进制函数.现在,这是通过接受二进制函数的可调用Python对象并调用它来实现的.它可以工作,但是比在每次迭代时都不需要在Python中反弹的代码慢大约80倍.

如何编写/构建/导入Cython函数可以传递到我的C++库中,以便它可以由C++库直接调用?

编辑: 如果我只是坚持C然后我会写类似的东西

EWise(double (*callback)(double, double))
Run Code Online (Sandbox Code Playgroud)

那么EWise就是callback(10, 20);这样的.我希望callback用Cython编写,使用用户想要的任何名称,并且必须通过Python以某种方式将指针传递给我的C++库.不知怎的,这是我不清楚的地方.

c++ python callback cython

17
推荐指数
2
解决办法
7996
查看次数

如何将Python模块拆分成多个文件?

我有一个Python模块,它包含3个类:A,A1和A2.A1和A2源自A.A包含在A1和A2上运行的功能.

当它在一个.py文件中时,一切正常.但是该文件已经增长了很长时间,我想将A1和A2分成自己的文件.尽管存在循环依赖,我如何拆分此文件?

python python-module

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

如何使用Xcode 5的最新GCC?

Apple彻底删除了他们曾经拥有的任何GCC支持.有没有办法在Xcode 5中使用最近的GCC(比如4.8)?换句话说,在Xcode中使用GCC代替LLVM.

macos xcode gcc

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

如何用distutils指定C++ 11?

我有一个需要用C++ 11编译的模块.在GCC和Clang上,这意味着一个std=c++11开关,或者std=c++0x在较旧的编译器上.

Python不是使用此开关编译的,因此Distutils在编译模块时不包含它.

使用distutils编译C++ 11代码的首选方法是什么?

python distutils c++11

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

SWIG_NewPointerObj的最后一个参数是什么意思?

我有一个兼容库,使用SWIG访问C++库.我觉得能够在这个层内创建一个SWIG包装的Python对象是有用的(而不是接受C++对象作为参数或返回一个).即我希望PyObject*它指向SWIG包装的C++对象.

我发现这个SWIG_NewPointerObj功能确实如此.SWIG生成的xx_wrap.cpp文件使用此函数,但它也在发出的标头中可用swig -python -external-runtime swigpyrun.h

但是,我找不到任何关于此函数的最后一个参数的引用.它似乎指定了对象的所有权,但没有文档说明每个选项的含义(甚至是它们都是什么).看来以下是可接受的值:

  • 0
  • SWIG_POINTER_OWN
  • SWIG_POINTER_NOSHADOW
  • SWIG_POINTER_NEW = OWN + NOSHADOW
  • SWIG_POINTER_DISOWN(我不确定SWIG_NewPointerObj是否接受此)
  • SWIG_POINTER_IMPLICIT_CONV(我不确定SWIG_NewPointerObj是否接受此)

我想创建一个仅在我的包装层中使用的对象.我想用我自己的指向C++对象的指针创建它(所以我可以改变C++对象的值并将它反映在Python对象中.我需要它,所以它可以传递给Python回调函数.我想要在程序的整个生命周期中保留这一个实例,这样我就不会浪费时间为每个回调创建/销毁相同的对象.哪个选项合适,我该怎么办Py_INCREF

python swig

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

使用distutils进行编译时禁用输出

我有一个setup.py脚本需要探测编译器的某些东西,如对TR1的支持,windows.h的存在(添加NOMINMAX定义)等等.我通过创建一个简单的程序并尝试编译来做这些检查它与Distutils的编译器类.存在/没有错误是我的答案.

这很好用,但这意味着编译器的丑陋错误消息会打印到控制台.有没有办法在compile手动调用函数时抑制错误消息?

这是我的函数,它试图编译程序,现在通过将错误流传递给文件来消除错误消息(回答我自己的问题):

def see_if_compiles(program, include_dirs, define_macros):
    """ Try to compile the passed in program and report if it compiles successfully or not. """
    from distutils.ccompiler import new_compiler, CompileError
    from shutil import rmtree
    import tempfile
    import os

    try:
        tmpdir = tempfile.mkdtemp()
    except AttributeError:
        # Python 2.2 doesn't have mkdtemp().
        tmpdir = "compile_check_tempdir"
        try:
            os.mkdir(tmpdir)
        except OSError:
            print "Can't create temporary directory. Aborting."
            sys.exit()

    old = os.getcwd()

    os.chdir(tmpdir)

    # Write the program
    f = open('compiletest.cpp', 'w')
    f.write(program)
    f.close()

    # …
Run Code Online (Sandbox Code Playgroud)

python distutils

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