我想比较多线程和多处理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()有问题,已经定义了!!!
感谢
答案 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