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

2024-10-04 05:23:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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

谢谢


Tags: infromimportmapfortimedefnp
3条回答

这里看起来像是缩进错误:

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

在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甚至无法判断您是否在请求它调用一个函数,更不用说您调用的是一个已经定义好的函数。在

看起来你的错误是:

time fornorm(g,range(100))

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

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

相关问题 更多 >