我想比较多线程和多处理python程序。但是,我得到了解释错误:
文件”/并行python.py“,第23行 标准时间(g,范围(100)) ^ 语法错误:语法无效
代码如下:
#!/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()有问题,它已经被定义了!!!在
谢谢
这里看起来像是缩进错误:
在def之后,python需要一个缩进的块。在
顺便说一句,
time something
是一个IPython“magic”函数,它在脚本文件中不起作用。您应该使用import timeit
模块并使用它。在你从哪里得到“时间”?这不是有效的python语句。它不像shell脚本。在
如果要计时,请使用timeit库: http://docs.python.org/library/timeit.html
它并不是说
fornorm
没有被定义,而是说你在调用fornorm
的那一行有语法错误。语法错误意味着Python甚至无法理解您的代码:就好像我对您说“flrk ask webski ur lkjq”,然后要求您按照我说的去做。关于fornorm
未被定义的错误将在很久以后发生。实际上,Python甚至无法判断您是否在请求它调用一个函数,更不用说您调用的是一个已经定义好的函数。在看起来你的错误是:
看起来您正在尝试使用shell命令
time
。Shell命令不是Python,Python无法理解它。在但是,粘贴到SO中的代码也有缩进错误,这应该在该行之前触发语法错误,所以我怀疑我们在这里看到的并不是您所运行的。在
相关问题 更多 >
编程相关推荐