2016-05-13 78 views
0

爲了讓我的項目有一個清晰的結構,我嘗試將不同的部分保存在不同的file.py中。我使用一個main.py一起啓動腳本(線程化)。現在我想將一個datetime.datetime變量放入另一個腳本中。2個python文件和1個main.py傳遞這些文件之間的變量

例如:

#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) 

我得到的錯誤是:

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 

我在做什麼錯?在文件2中導入file1似乎也不起作用。我應該把所有的腳本放在一個文件中嗎?

如果我錯過了任何信息,只是問:)謝謝!

+1

看看https://docs.python.org/2/library/multiprocessing.html#sharing-state-between-processes – ozgur

回答

2

由於回溯說,錯誤來自global t1未定義的事實。

如果您發佈的全部代碼,那麼錯誤是在

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

但是,如果你想在進程間共享ressources,然後再考慮multiprocessing模塊。

+0

我會看看這個,謝謝你的回答!當我得到答案時,我會回到這個問題! – Zulex

0

試試這個:

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

設置t1外的方法定義應該使其訪問時導入文件(file1.t1,很明顯)。

+0

感謝您的回答,這個工作幾乎完美!但是當運行main.py時,它打印2次t1(file2.py正在這樣做)。所以我的file2.py可能運行了2次。 – Zulex

+0

當我讓def a()也打印t1(+其他文本來識別它)時,我從file1和file4的t1時間t1得到4次t1。知道我做錯了什麼?我認爲它在main.py中的多線程中出錯了。 – Zulex