2011-12-18 49 views
0

我有以下代碼塊,它是大型程序的一部分。我試圖讓它打印執行時間,一旦所有的線程關閉,但似乎無法使其工作。有任何想法嗎?使用線程計算Python程序

import time 
import csv 
import threading 
import urllib.request 


def openSP500file(): 
    SP500 = reader(open(r'C:\Users\test\Desktop\SP500.csv', 'r'), delimiter=',') 
    for x in SP500: 
     indStk = x[0] 
     t1 = StockData(indStk) 
     t1.start() 

    if not t1.isAlive(): 
     print(time.clock()-start_time, 'seconds') 
    else: 
     pass 

def main(): 
    openSP500file() 


if __name__ == '__main__': 
    start_time = time.clock() 
    main() 

謝謝!

+0

既沒有讀者也沒有定義StockData。也許這就是問題所在? – 2011-12-18 20:28:15

+0

這是一個更大的程序的一部分。 Reader指的是csv.reader,StockData指的是我的股票數據類。代碼運行,我不能打印執行時間,因爲線程。 – 2011-12-18 20:30:59

回答

2

您並未等待所有線程完成(僅創建最後一個線程)。也許在你的線程產生循環中這樣的東西?

threads = [] 
for x in SP500: 
    t1 = StockData(x[0]) 
    t1.start() 
    threads.append(t1) 
for t in threads: 
    t.join() 
... print running time 
+0

當我嘗試這個時,它會打印每個線程完成的時間。我只想要最後一個完成的時間,甚至更好,只是程序的完整運行時間。 – 2011-12-18 21:45:10

+0

print語句與'for'對齊,而不是't.join'。無可否認,省略號令人難以理解 – 2011-12-19 21:58:26