Помогите разобраться.
Имеется 50 файлов по 100 000 тыс. записей
В них буду искать слова и подсчитывать из количество.
#!/usr/bin/env python
# coding=utf-8
import threading as t
import time, re
import Queue
def parseit( num ):
global total
log = open('log_%d' % num)
lines = log.readlines()
for line in lines:
if re.search('miki', line):
total += 1
class Parse( t.Thread ):
def __init__(self, work_queue):
self.work_queue = work_queue
t.Thread.__init__(self)
def run(self):
while True:
filename = self.work_queue.get()
self.process( filename )
self.work_queue.task_done()
def process(self,filename):
global total
log = open(filename)
lines = log.readlines()
for line in lines:
if re.search('miki', line):
total += 1
def test1():
global total
total = 0
for i in range(1,50):
parseit(i)
print total
def test2():
global total
THREAD = 3
total = 0
work_q = Queue.Queue()
lst_file = ['log_%d' % x for x in range(1,50) ]
for item in lst_file:
work_q.put( item )
for i in range( THREAD ):
tr = Parse(work_q)
tr.setDaemon(True)
tr.start()
work_q.join()
print total
start = time.time()
test1()
print 'Послед.: %f'.decode('utf-8') % (time.time() - start)
start = time.time()
test2()
print 'Потоки: %f'.decode('utf-8') % (time.time() - start)
Microsoft Windows
© Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
E:\DevProject\etest>thtest.py
815220
Послед.: 12.529000
789345
Потоки: 18.775000
E:\DevProject\etest>thtest.py
815220
Послед.: 12.357000
789265
Потоки: 18.825000
E:\DevProject\etest>thtest.py
815220
Послед.: 12.237000
789370
Потоки: 20.780000