相关疑难解决方法(0)

如何使用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万
查看次数

在Python中覆盖对象的复制/深度复制操作的正确方法是什么?

所以只是为了建立,我觉得我理解复制模块中的copyvs 之间的区别deepcopy,我已经使用过copy.copy并且copy.deepcopy成功之前,但这是我第一次真正去重载__copy____deepcopy__方法.我已经围绕谷歌搜索,并通过看内置的Python模块查找的实例__copy____deepcopy__功能(例如sets.py,decimal.pyfractions.py),但我仍然肯定不是100%我已经得到了它的权利.

这是我的情景:

我有一个配置对象,它主要由简单属性组成(尽管它可能包含其他非基本对象的列表).最初,我将使用一组默认值来实例化一个配置对象.此配置将切换到多个其他对象(以确保所有对象以相同的配置启动).然而,一旦用户交互开始,每个对象将需要能够独立地调整配置而不影响彼此的配置(对我来说,我需要使用我的初始配置的深度复制来处理).

这是一个示例对象:

class ChartConfig(object):

    def __init__(self):

        #Drawing properties (Booleans/strings)
        self.antialiased = None
        self.plot_style = None
        self.plot_title = None
        self.autoscale = None

        #X axis properties (strings/ints)
        self.xaxis_title = None
        self.xaxis_tick_rotation = None
        self.xaxis_tick_align = None

        #Y axis properties (strings/ints)
        self.yaxis_title = None
        self.yaxis_tick_rotation = None
        self.yaxis_tick_align = None

        #A list of non-primitive objects
        self.trace_configs = [] …
Run Code Online (Sandbox Code Playgroud)

python python-internals

82
推荐指数
5
解决办法
5万
查看次数

如何在Python中制作列表的浅表副本

我试图在Python中实现一个算法来生成列表的所有排列.但我在我的for循环中我希望保持原始前缀和休息列表完整,因此我试图使用newprefix和newrest创建这些列表的副本,但是在每次迭代打印变量rest时,我看到即使是变量休息正在修改!如何在Python中创建列表的浅表副本?或者我的逻辑是否存在另一个问题?

def perm(prefix, rest):
    if len(rest) == 0:
        print prefix 
    for i in range(len(rest)):
        #prints in the for loop are just for debugging
        print "rest:", rest
        print "i=", i
        newprefix = prefix
        newprefix.append(rest[i])
        newrest = rest
        newrest.pop(i)
        print "old pre : ", prefix
        print "newpre=", newprefix
        print "newrest=", newrest
        perm(newprefix, newrest)


perm([], ['a','b','c'])
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

Python:如何深度复制词典列表

我有一个列表,其每个元素都是字典。每个元素看起来像这样

{'CELL': <Cell SOW16007.2.AC7>, 'COUNT': 2, 'NAMELIST': [], 'NAME': u'', 'LEVEL': u'SSE'}

我需要对此列表进行备份。我不能使用常规分配或使用浅表复制,因为我会更改原始列表。但是当我使用Deepcopy时 backUpNames=deepcopy(oldNames) 出现错误:

TypeError: unhashable type: 'array.array'

我在这里做什么错?我该如何解决?

这不是重复的问题,因为我已经使用过Deepcopy,我面临的问题是Deepcopy引发的错误。

最小代码:

我使用openpxl迭代工作表并将值附加到列表中

wb=openpyxl.load_workbook(sys.argv[3],data_only=True)
_ts=wb.active 
oldNames.append({'NAME':_ts['G7'].value,'LEVEL':_ts['H7'].value,'CELL':_ts['F7'],'COUNT':0,'NAMELIST':[]})
backUpNames=deepcopy(oldNames)#error occurring here
Run Code Online (Sandbox Code Playgroud)

谢谢

python dictionary

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

Python复制或克隆defaultdict变量

如何在Python的defaultdict对象中创建一个副本(不只是为内存中的同一位置指定一个新指针)?

from collections import defaultdict
itemsChosen = defaultdict(list)    
itemsChosen[1].append(1)
dupChosen = itemsChosen
itemsChosen[2].append(1)
print dupChosen
Run Code Online (Sandbox Code Playgroud)

上面的代码是浅层复制并返回

defaultdict(<type 'list'>, {1: [1], 2: [1]})
Run Code Online (Sandbox Code Playgroud)

而我正在寻找它返回

defaultdict(<type 'list'>, {1: [1]})
Run Code Online (Sandbox Code Playgroud)

谢谢.

python dictionary copy python-2.7 defaultdict

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

Python:复制“array.array”

除了创建一个新值并复制值或使用and之外,还有一种方法可以在 Python 中复制 an array.array(而不是 a )吗?我似乎在文档中找不到任何内容。如果没有,是否有类似的内置数据类型可以做到这一点?list.to_something.from_something

我正在开发一个高性能模块,所以答案越快越好。

我当前的解决方案只是使用.to_bytesand .from_bytes,根据我的测试,速度大约快 1.8 倍。

python arrays copy

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

为什么一个值改变了而第二个值没有改变?

a = [ 1, 2 ]
b = a
a.append(3)
print(b) # shows [ 1 2 3 ] which means b changed

c = 4
d = c
c = 8
print(d) # shows 4 which means d did not change
Run Code Online (Sandbox Code Playgroud)

为什么 b 变了,而 d 没有?.append 改变了 b 中存储的值,但 c = 8 并没有改变 d 中的值

python list python-3.x

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