2013-03-09 122 views
0

我正在写程序,在文本中搜索并行单词。我有运行线程的“问题”,因为它在程序中花费的时间最长。如果线程更多,则需要更少的时间来查找单词,因为文本块在线程之间分配。但我试图测量哪部分花费最多时间,这是开始线程的这一部分。下面的代码:python多线程长线程运行

startThreadsStart=time.time() 
for i in range(0,threads_number): 
    threads.append(ParallelStringSearch("something", i)) 
    threads[i].start() 
startThreadsEnd = time.time()-startThreadsStart 

和run()方法中的Thread类:

def run(self): 
    self.time = time.time() 
    self.search() 
    self.end_time = time.time()-self.time 
    print "EXECUTION: ",self.index,self.end_time 
+0

您使用多少个线程? – shx2 2013-03-09 10:27:15

回答

1

假设你使用CPython的,用于并行CPU密集型任务,蟒蛇线程将无法帮助你,因为GIL。改用子进程。

+0

我正在使用没有GIL的Jython。但开始线程需要最长的时间 – adaniluk 2013-03-09 10:12:07

+0

我使用startThreadsStart和startThreadsEnd来获取运行所有线程的时间。例如,我有120个线程,一个大约0.0620000362396找字,但所有启动所有120个线程的过程需要0.317000150681 – adaniluk 2013-03-09 10:25:46

+0

如果有更多的线程,我应该得到更少的整体处理时间 – adaniluk 2013-03-09 10:29:06