相关疑难解决方法(0)

C++中的堆栈或堆中的全局内存管理?

如果我在C++应用程序中全局声明数据结构,它是否会消耗堆栈内存或堆内存?

例如

struct AAA
{

.../.../.
../../..
}arr[59652323];
Run Code Online (Sandbox Code Playgroud)

c++ stack memory-management

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

使用timeit时如何传递函数的参数.Timer()

这是一个简单程序的概述

# some pre-defined constants
A = 1
B = 2

# function that does something critical
def foo(num1, num2):
    # do something

# main program.... do something to A and B
for i in range(20):
    # do something to A and B
    # and update A and B during each iteration

import timeit
t = timeit.Timer(stmt="foo(num1,num2)")  
print t.timeit(5)
Run Code Online (Sandbox Code Playgroud)

我只是不断得到"全球名称foo没有定义".....任何人都可以帮助我吗?谢谢!

python timer

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

Python - 全局变量与本地变量的性能

我还是Python新手,我一直在努力提高Python脚本的性能,所以我测试了它是否有全局变量.我把它计时了,令我惊讶的是,它在声明全局变量时运行得更快,而不是将局部变量传递给函数.这是怎么回事?我认为局部变量的执行速度更快?(我知道全局变量不安全,我仍然很好奇.)

python performance

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

使Python脚本面向对象

我正在用Python编写一个应用程序,它将具有许多不同的功能,所以逻辑上我认为最好将我的脚本分成不同的模块.目前我的脚本读入一个文本文件,其中包含已转换为标记和拼写的代码.然后,该脚本将代码重建为一个字符串,其中的空行将在原始代码中显示注释.

我遇到了使脚本面向对象的问题.无论我尝试什么,我似乎无法让程序以与它只是一个脚本文件相同的方式运行.理想情况下,我想要有两个脚本文件,一个包含清理和重建文件的类和函数.第二个脚本只是从命令行中作为参数给出的文件中的另一个文件中的类调用该函数.这是我目前的脚本:

import sys

tokenList = open(sys.argv[1], 'r')
cleanedInput = ''
prevLine = 0

for line in tokenList:

    if line.startswith('LINE:'):
        lineNo = int(line.split(':', 1)[1].strip())
        diff = lineNo - prevLine - 1

        if diff == 0:
            cleanedInput += '\n'
        if diff == 1:
            cleanedInput += '\n\n'
        else:
            cleanedInput += '\n' * diff

        prevLine = lineNo
        continue

    cleanedLine = line.split(':', 1)[1].strip()
    cleanedInput += cleanedLine + ' '

print cleanedInput
Run Code Online (Sandbox Code Playgroud)

按照下面的Alex Martelli建议后,我现在有以下代码,它给出了与原始代码相同的输出.

def main():
    tokenList = open(sys.argv[1], 'r')
    cleanedInput = []
    prevLine = …
Run Code Online (Sandbox Code Playgroud)

python oop

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

为什么这些Python代码的表现如此不同

请看下面的代码来解决同一组问题,我不认为提到问题无论如何会帮助目的,这是Josephus问题的又一次迭代:

解决方案1:

import sys
from math import log

cases= int(sys.stdin.readline())
current= 0
while current < cases:
    current += 1
    n = int(sys.stdin.readline())
    print 2*(n - 2**(int(log(n,2))))+1
Run Code Online (Sandbox Code Playgroud)

该解决方案在累计1.0912秒内解决了给定的10个测试用例,并消耗了4360KiB的内存.

解决方案2:

def josephus_2( n ):
    from math import log
    return 2*(n - 2**(int(log(n,2))))+1

import sys
cases= int(sys.stdin.readline())
current= 0
while current < cases:
    current += 1
    n = int(sys.stdin.readline())
    print josephus_2( n )
Run Code Online (Sandbox Code Playgroud)

该解决方案在总共1.0497秒和640KiB内存中解决了相同的10个测试用例.

作为一个Python n00b,我想知道,虽然根据在线评判,我获得两个相同的积分,但是什么使解决方案2比1更快,更高的内存效率?我知道时间差可以听起来很少,但同时我在最快的解决方案上排名第一,甚至比c/c ++/perl提交更快

这个截图有帮助吗?

python performance time python-2.7 josephus

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

为什么在这种情况下使用发电机功能的速度是原来的两倍?

这两个实现共同的代码:

from math import sqrt

def factors(x):
    num = 2
    sq = int(sqrt(x))
    for i in range(2, sq):
        if (x % i) == 0:
            num += 2
    return num + ((1 if sq == sqrt(x) else 2) if x % sq == 0 else 0)
Run Code Online (Sandbox Code Playgroud)

1.不使用发电机功能的实施:

i = 1
while True:
    if factors(i * (i+1) * 0.5) > 500:
        print(int(i * (i+1) * 0.5))
        break
    i += 1
Run Code Online (Sandbox Code Playgroud)

2.利用发电机功能的实施:

def triangle():
    i = 1
    while True:
        yield int(0.5 * i …
Run Code Online (Sandbox Code Playgroud)

python performance generator

10
推荐指数
3
解决办法
1272
查看次数

Python用于全局空间中的循环性能与函数内部的循环性能

我一直在努力理解Python的循环性能,在这里我发现,对于在全局空间中具有相同迭代的循环,与函数内部的迭代相比需要花费很多时间.

import time

MAX_NUM = 50000000

# Running for loop in global space
start = time.time()

for i in xrange(MAX_NUM):
    pass

print time.time() - start


# Running th same kind of loop within a function
def foo():
    for i in xrange(MAX_NUM):
        pass

start = time.time()
foo()
print time.time() - start
Run Code Online (Sandbox Code Playgroud)

当我执行此操作时,我目睹了执行时​​间的巨大差异.

2.00527501106
0.811304092407
Run Code Online (Sandbox Code Playgroud)

我想知道是什么让执行时间产生巨大差异?循环性能如何影响全局空间写入函数内部?

python python-2.7 python-3.x

10
推荐指数
0
解决办法
81
查看次数

全局与本地命名空间性能差异

为什么在函数中执行一组命令:

def main():
    [do stuff]
    return something
print(main())
Run Code Online (Sandbox Code Playgroud)

在python中运行速度比在顶层执行命令1.5x3x快得多:

[do stuff]
print(something)
Run Code Online (Sandbox Code Playgroud)

python optimization python-2.7 python-3.x

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

Python代码在函数中运行得更快,这真的是真的吗?

我看到一条评论引导我提出问题为什么Python代码在函数中运行得更快?.

我开始思考,并想我会自己尝试使用该timeit库,但是我得到了非常不同的结果:

(注意:10**8改为10**7让时间更快一些)

>>> from timeit import repeat
>>> setup = """
def main():
    for i in xrange(10**7):
        pass
"""
>>> stmt = """
for i in xrange(10**7):
    pass
"""
>>> min(repeat('main()', setup, repeat=7, number=10))
1.4399558753975725
>>> min(repeat(stmt, repeat=7, number=10))
1.4410973942722194
>>> 1.4410973942722194 / 1.4399558753975725
1.000792745732109
Run Code Online (Sandbox Code Playgroud)
  • 我使用timeit得当吗?
  • 为什么这些结果相差不到0.1%,而另一个问题的结果差异接近250%?
  • 使用CPython编译的Python版本(如Cython)时,它只会有所不同吗?
  • 最终:Python代码在函数中真的更快,还是仅仅取决于你如何计时?

python performance benchmarking profiling cpython

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

合并(连接)具有缺失值和不同类型(str 和 int)的 pandas 列

我有一个数据框,其中有一列包含整数,我想将其与一列包含字符串值的组合。两列都是对象数据类型。问题是这些列也可能是 NaN。

我找到的解决方案会导致不同的错误或不良结果。

我的数据框如下所示:

指数 剂量持续时间单位 剂量数量值 剂量单位 数量值
0
1 片剂
2 2
3 1 片剂
4 2 片剂

创建数据框的代码:

df = pd.DataFrame([["day",None,None,None],["day",None,"tablet(s)",None],["day",2,"tablet(s)",None],["day",1,"tablet(s)",None],["day",2,"tablet(s)",None]], columns=["dosagedurationunit","dosagequantityvalue","dosagequantityunit","quantityvalue"])
Run Code Online (Sandbox Code Playgroud)

以下答案适用于相同类型(str)的列: Combine pandas string columns with Missing Values

  • 在串联之前将列转换为 str 数据类型会产生“nan”字符串,例如“NaN Tablet(s)”。
  • 当要“连接”的列之一中有整数时,使用以下代码会导致类型错误。
df['DOSE'] = df[['dosagequantityvalue', 'dosagequantityunit']].apply(
            lambda x: None if x.isnull().all() else ' '.join(x.dropna()), axis=1)
Run Code Online (Sandbox Code Playgroud)
  • 类型错误:序列项 0:预期的 str 实例,找到 int

所需的输出数据帧:

指数 剂量持续时间单位 剂量数量值 剂量单位 数量值 标准化剂量
0 南 …

python concatenation nan dataframe pandas

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