2016-05-13 5 views
0

私のプロジェクトの構造を明確にするために、別の部分を別のfile.pyに保存しようとしています。そして、私は1つのmain.pyを使ってスクリプトを一緒に(スレッド化して)起動します。もう1つのdatetime.datetime変数をもう1つのスクリプトに入れたいと思っています。例えば2つのpythonファイルと1つのmain.pyを渡す変数

:私は間違って何をやっている

Traceback (most recent call last): 
File "location\main.py", line 7, in <module> 
import test2 
File "location\file2", line 3, in <module> 
b() 
File "location\file2", line 2, in b 
print(t1) 
NameError: name 't1' is not defined 

#main.py 
import file1 
import file2 
if __name__=='__main__': 
    p1 = Process(target = file1.a) 
    p1.start() 
    time.sleep(1) 
    p2 = Process(target = file2.b) 
    p2.start() 

#file1.py 
def a(): 
    global t1 
    t1 = datetime.datetime(example date) 

#file2.py 
def b(): 
    print(t1) 

私が取得エラーは、次のですか?ファイル2のfile1をインポートすることも機能していないようです。私はすべてのスクリプトを1つのファイルに入れておくべきですか?

私が情報を見逃している場合は、ただ質問してください:)ありがとう!

+1

https://docs.python.org/2/library/multiprocessing.html#sharing-state-between-processesを参照してください – ozgur

答えて

2

トレースバックによれば、エラーはglobal t1が定義されていないという事実に起因します。

あなたが全体のコードを掲載した場合、そのエラーは、プロセス間ressourcesを共有したい場合は、multiprocessingモジュールを考えるしかし

#file1.py 
def a(): 
    global t1 # Python interpreter can not find this variable. 
    t1 = datetime.datetime(example date) 

です。

+0

私はあなたの答えをありがとう!答えが出たら、私はこれに戻ります! – Zulex

0

はこれを試してみてください:ファイルがインポートされたときにメソッド定義t1外を設定

t1=0 
def a(): 
    t1=datetime.datetime(example date) 

(当然、file1.t1)それにアクセスできるようにする必要があります。

+0

あなたの答えをありがとう、これはほぼ完璧に働いた!しかし、main.pyを実行すると、それは2回t1(file2.pyがこれを実行しています)です。したがって、私のfile2.pyはおそらく2回実行されています。 – Zulex

+0

def a()もt1(それを識別するための+他のテキスト)を出力させると、file1から4回t1、file2からt1を4回取得します。私が間違っていることを知っていますか? main.pyのマルチスレッドでは間違っていると思います。 – Zulex

関連する問題