2011-12-21 32 views
0

我想比較多線程和多處理Python程序。但是,我得到了解釋錯誤:的蟒蛇多線程的解讀錯誤和多

文件 「./parallelPython.py」 23行 時間fornorm(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()有問題,它已被定義!!!

感謝

回答

1

它看起來像一個在這裏壓痕錯誤:

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

後您的高清蟒蛇期待一個縮進塊。

順便說一句,time something是IPython的「神奇」的功能,它不會在腳本文件的工作。您應該使用import timeit模塊並使用它。

1

並不是說fornorm尚未定義,它表示您在調用fornorm的行上有語法錯誤。語法錯誤意味着Python甚至無法理解你的代碼:就好像我對你說的那樣,「然後請你去做我說的。關於fornorm未被定義的錯誤將在很晚之後發生。事實上,Python甚至無法告訴你是否要求它調用函數,更不用說是否調用已經定義的函數。

它看起來像你的錯誤是這樣的:

time fornorm(g,range(100)) 

這看起來像你想使用shell命令time。 Shell命令不是Python,Python不理解它。

然而,你的代碼粘貼到SO還具有縮進錯誤,本應早於該行引發了語法錯誤,所以我懷疑什麼,我們可以看到這裏是不是你正在運行什麼。