python多线程和多处理的解释错误

时间:2011-12-21 05:35:22

标签: python multithreading multiprocessing

我想比较多线程和多处理python程序。但是,我得到了解释错误:

文件" ./ parallelPython.py",第23行     时间fornorm(g,范围(100))                ^ SyntaxError:语法无效

代码如下:

#!/usr/bin/python -tt

import numpy as np
import math

def f(x):
    print x
    y = [1]*10000000
    [math.exp(i) for i in y]
def g(x):
    print x
    y = np.ones(10000000)
    np.exp(y)

from handythread import foreach
from processing import Pool
from timings import f,g

def fornorm(f,l):
for i in l:
    f(i)

time fornorm(g,range(100))
time fornorm(f,range(10))
time foreach(g,range(100),threads=2)
time foreach(f,range(10),threads=2)
p = Pool(2)
time p.map(g,range(100))
time p.map(f,range(100))

我不知道为什么fornorm()有问题,已经定义了!!!

感谢

3 个答案:

答案 0 :(得分:1)

这看起来像是缩进错误:

def fornorm(f,l):
for i in l:
    f(i)

你的def python期待一个缩进的块。

顺便说一句,time something是一个IPython“魔术”功能,它不能在脚本文件中工作。你应该import timeit模块并使用它。

答案 1 :(得分:1)

它没有说fornorm尚未定义,它表示您在调用fornorm的行上有语法错误。语法错误意味着Python甚至无法理解你的代码:就好像我对你说“flrk ask web ski ur lkjq”,然后请你做我说的话。关于fornorm未定义的错误将在稍后发生。事实上,Python甚至无法判断你是否要求它调用函数,更不用说你是否正在调用已定义的函数。

看起来你的错误是这样的:

time fornorm(g,range(100))

看起来你正在尝试使用shell命令time。 Shell命令不是Python,Python不理解它。

但是,粘贴到SO中的代码也有缩进错误,这应该在该行之前触发语法错误,所以我怀疑我们在这里看到的并不完全是你正在运行的。

答案 2 :(得分:0)

你从哪里得到“时间”?那不是一个有效的python语句。它不像shell脚本。

如果你想计时,请使用timeit库: http://docs.python.org/library/timeit.html