Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何减少5秒到1秒的python列表理解成本(百万项)_Python_Performance_Optimization - Fatal编程技术网

如何减少5秒到1秒的python列表理解成本(百万项)

如何减少5秒到1秒的python列表理解成本(百万项),python,performance,optimization,Python,Performance,Optimization,现在我们的代码在集合中存储了3000000个id,格式是字符串,我尝试使用列表理解将其转换为int。但这需要5秒,如何降低将字符串转换为int的成本 以下是我的测试代码: import random import time a = set() for i in xrange(3088767): a.add(str(random.randint(10005907, 100000000))) start = time.time() ld = [int(i) for i in a] en

现在我们的代码在集合中存储了3000000个id,格式是字符串,我尝试使用列表理解将其转换为int。但这需要5秒,如何降低将字符串转换为int的成本

以下是我的测试代码:

import random
import time


a = set()
for i in xrange(3088767):
    a.add(str(random.randint(10005907, 100000000)))

start = time.time()
ld = [int(i) for i in a]
end = time.time()
print end-start
结果是:

$python  -V
Python 2.6.5
$python  ld.py
5.53777289391
应该会更快,而且是您唯一不考虑其他python实现的选项

尝试使用或


这些工具可以让你的代码飞!(特别是Pypy,在我的PC中,Pypy将代码速度提高4倍。)

使用更快的计算机?@MitchWheat我想知道是否有任何方法可以帮助解决此问题执行300万字符串->整数转换—代码中经常发生的事情?如果是这样的话,听起来似乎有更有效的方法来提高其性能(即,首先将其存储为int…@DavidRobinson我从redis获得了它们,它们是字符串而不是int。@linbo:缓存有什么方法可以提高您的性能吗?(它们总是一个新的3M字符串,还是每次重复都会重复大部分字符串?)如果您分享更多详细信息,也许还有另一种提高性能的方法。对于map,是的,我测试了它,它需要4美元sec@jurgenreza我的成绩是4.35554289818。0.0? 我认为这不合理,应该要花些时间。或者我的机器太慢了。在我的系统上使用
map
可以将运行时间从~3.8秒提高到3.0秒。是的,这是另一个Python实现,但是..是的,这是一个解决方案,我将测试它们。Thanks@linbo很清楚(不是每个人都接受其他python实现作为解决方案)。好的测试!(首先从Pypy开始,这是非常推荐的,因为Cython需要重写您的代码)好吧,我们有很多python代码,不确定是否可以使用Pypy。@linbo Pypy只与一些代码不兼容。这里有一个util链接,用于查看兼容性:-只需编写代码,您的代码只需加快速度即可!;)
ld = map(int, a)