2011-12-21 24 views
0

マルチスレッドとマルチプロセッシングのpythonプログラムを比較したいと思います。しかし、私は解釈エラーを得た: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()に問題がありますか、それは定義されていません!

おかげ

答えて

1

ここはインデントエラーのようになります。

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

あなたのデフPythonはインデントブロックを期待された後。

ちなみに、time somethingはIPythonの「マジック」機能であり、スクリプトファイルでは機能しません。モジュールimport timeitを使用してください。

1

fornormが定義されていないとは言わず、fornormという名前の行に構文エラーがあります。構文エラーはPythonがコードを理解することさえできないことを意味します。まるで私があなたに "flrk ask web ski ur lkjq"と言ったように、そして私が言ったことをあなたに依頼します。 fornormに関するエラーが定義されていない場合は、後で起こります。つまり、Pythonは、すでに定義されているものを呼び出すかどうかを問わず、関数を呼び出すかどうかを判断することさえできません。

あなたのエラーは、このあるように見えます:あなたは、シェルコマンドtimeを使用しようとしているように見えること

time fornorm(g,range(100)) 

。シェルコマンドはPythonではなく、Pythonはそれを理解しません。

しかし、SOに貼り付けられたコードにもインデントエラーがあります。これは、その行よりも前に構文エラーが発生しているはずなので、私がここで見ることが正確には実行していないと思われます。

0

「時間」はどこから届いていますか?これは有効なPythonステートメントではありません。これはシェルスクリプトのようなものではありません。

時間を過ごしたい場合は、timeitライブラリを使用してください: http://docs.python.org/library/timeit.html

関連する問題