2011-12-18 88 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