首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么pyp (python)一行程序如此慢?

为什么pyp (python)一行程序如此慢?
EN

Stack Overflow用户
提问于 2013-05-06 02:29:34
回答 2查看 631关注 0票数 0
代码语言:javascript
复制
pyp "mm | p if n==0 else (p[:-2] + [(int(x)%12) for x in p[-2:]]) | mm"

然而,这被证明是令人惊讶的缓慢。如果我使用以下命令创建测试文件

代码语言:javascript
复制
for j in xrange(50000):
    print ",".join(str(i) for i in [random.choice(xrange(1000)) for i in xrange(8)])

然后运行

代码语言:javascript
复制
time (cat testmedium.txt |~/.local/bin/pyp "mm | p if n==0 else (p[:-2] + [(int(x)%12) for x in p[-2:]]) | mm" > /dev/null)

我得到了

代码语言:javascript
复制
real    1m27.889s
user    1m26.941s
sys 0m0.688s

然而,perl中的等价物几乎是即时的。

代码语言:javascript
复制
time (cat testmedium.txt |perl -l -a -F',' -p -e'if ($. > 1) { $F[6] %=12; $F[7] %= 12;$_ = join(q{,}, @F[6,7]) }' > /dev/null)

real    0m0.196s
user    0m0.192s
sys 0m0.012s
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-06 02:52:47

这个代码..。

代码语言:javascript
复制
import sys

for index,line in enumerate(sys.stdin):
    if index == 0:
        print line
    else:
        values = line.split(',')
        values[-2:] = [str(int(x)%12) for x in values[-2:]]
        print ','.join(values)

在不到一秒钟的时间内运行(使用与您使用的相同方法生成的测试文件):

代码语言:javascript
复制
$ time (cat test.txt | python foo.py > /dev/null)

real    0m0.363s
user    0m0.339s
sys     0m0.032s

因此,如果你遇到问题,这可能是pyp正在尝试做的事情的低效。

票数 4
EN

Stack Overflow用户

发布于 2014-05-23 10:48:04

这是对您的问题的间接回答@marshall。

首先,我想说对我来说,pyp最大的优势是不必学习另一门语言,而且我通常不需要处理大量的数据,所以它非常适合我的需求。

代码语言:javascript
复制
alias 'pl=pypy /usr/bin/pyp'

然后我用pyp和pl运行这个命令

代码语言:javascript
复制
lr | pl "'doc',p, p.replace('e','EEE')+'.xpg' | pp.reverse() | ''.join(p)" | pl "d|u"

对于更大的目录集,它是470秒和250秒。在此操作过程中,Python和PyPy一样,100%地运行在一个内核上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16387709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档