相关疑难解决方法(0)

为什么Python代码在函数中运行得更快?

def main():
    for i in xrange(10**8):
        pass
main()
Run Code Online (Sandbox Code Playgroud)

Python中的这段代码运行(注意:时序是在Linux中的BASH中使用时间函数完成的.)

real    0m1.841s
user    0m1.828s
sys     0m0.012s
Run Code Online (Sandbox Code Playgroud)

但是,如果for循环没有放在函数中,

for i in xrange(10**8):
    pass
Run Code Online (Sandbox Code Playgroud)

然后它会运行更长的时间:

real    0m4.543s
user    0m4.524s
sys     0m0.012s
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

python performance benchmarking profiling cpython

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

Python局部变量初始化

我对python很新,我想知道局部变量是如何工作的.让我们从一个简单方法的例子开始:

def do_sth():
    local_dict = { 'a': 1, 'b': 2, 'c': 3, ... }
    ...
Run Code Online (Sandbox Code Playgroud)

我们假设local_dict像一个const变量一样使用.这就是问题:每次调用do_sth()或创建一次并将其保存在do_sth()内部的某个地方时,都会创建它?

python

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

函数调用执行速度比非函数调用快

函数调用总会产生一些开销.但为什么下面的代码显示非函数调用较慢.

码:

import time

def s():
    for i in range(1000000000):
        1 + 1

t = time.time()
s()
print("Function call: " + str(time.time() - t))

t = time.time()
for i in range(1000000000):
    1 + 1
print("Non function call: " + str(time.time() - t))
Run Code Online (Sandbox Code Playgroud)

输出:

Function call: 38.39736223220825
Non function call: 60.33238506317139
Run Code Online (Sandbox Code Playgroud)

python function python-3.x python-internals

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

自写的 os.walk-alike 比 os.walk 本身慢得多 - 为什么?

不幸的是,这段代码的运行速度比“os.walk”慢,但为什么呢?

难道是“for”循环导致运行缓慢?

“像‘os.walk’一样工作的代码:( ‘os.walk’函数做了它所做的事情)

注: 我写这篇文章是为了提高自己!:

import os, time
from os.path import *

x = ""
y = []
z = []
var = 0

def walk(xew):
    global top, var, x,y,z
    if not var: var = [xew]
    for i in var:
        try:
            for ii in os.listdir(i):
                y.append(ii) if isdir(i+os.sep+ii) else z.append(ii)

            x = top = i
            var = [top+os.sep+i for i in os.listdir(top) if isdir(top+os.sep+i)]         
        except:
            continue
        yield x,y,z
        yield from walk(var)
        var.clear();y.clear();z.clear()
Run Code Online (Sandbox Code Playgroud)

例如

2秒后结束:

for x,y,z in …
Run Code Online (Sandbox Code Playgroud)

python performance python-3.x python-3.6

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

Python Pandas全局vs传递变量

我正在创建一个"实时"流程,该流程从SierraChart更新的专有格式化OHLCVTBA文件中获取数据.使用生成器读取数据并创建数据帧的代码发布在pastebin上

我意识到我的结构(新数据驱动)是错误的,我即将重新组织它. PhE的问题和Wes的回应让我朝着填充预先填充的数据框架的方向发挥了作用.我的问题是:

将我的数据帧和指针保存为全局变量或将它们传递给使用它们的各种函数是否更快?此外,还有其他考虑应该推动这一选择吗?

谢谢.

python pandas

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

是否有性能增益或之前声明所有局部变量的其他原因?

我在代码库和在线中也看到了很多这种风格,如果你有一个带有for循环的函数和if语句,那么只有它们使用的所有变量都没有在它们之外声明.例如:

void process()
{
    int i;
    int count = 100;
    vector3 point;
    vector sum;

    for (i = 0; i < count; ++i)
    {
        import(this, "pos", point);
        sum += point;
    }
    sum /= count;
}
Run Code Online (Sandbox Code Playgroud)

或者这是不成熟的优化?我对C++,C#和Python很感兴趣,这些是我使用的语言,我一遍又一遍地看到它们.

c# c++ python optimization performance

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