Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 8, 2020 00:17:47

tref
Зарегистрирован: 2020-05-12
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Как ускорить код? Numba?

Подскажите как можно ускорить код? TXT файлы весят 20MB, python долго считывает их.

Пытался через библиотеку ‘Numba’, но слишком много действий для jit'a и выполнение завершается.

 import requests
import random
from numba import njit, cuda 
filenames = ['input7.txt', 'input8.txt']
def run():
	try:
		while 5 > 1:
			browser = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) ' +\
				'AppleWebKit/537.36 (KHTML, like Gecko) ' +\
				'Chrome/71.0.3578.98 Safari/537.36'
			headers = {'User-Agent': browser}
			pageNum1 = random.randrange(1,1000000)
			pageNum2 = random.randrange(1,1000000)
			fullurl = ['http://localhost/'+str(pageNum1),'http://localhost/'+str(pageNum2)]
			for url in fullurl:
				html = requests.get(url=url, headers=headers).text
				print (url)
				for filename in filenames:
					with open(filename) as f:
						for line in f:
							if line.rstrip() in html:
								print(f'Find "{line}" on the page {url}')
								with open('find.txt', 'a') as appendFile:
									appendFile.write('{}\n'.format(url))
									appendFile.write('{}\n'.format(line))
								return
								
	except (ValueError):
		print ("Break")
		
run()

Офлайн

#2 Июнь 8, 2020 01:49:08

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

Как ускорить код? Numba?

Чтобы ускорить код, можно попробовать ускорить поиск. Полученную страницу можно преобразовать в бинарное дерево один раз и потом каждую строку из файла искать в бинарном дереве.

Сейчас строка файла ищется даже там, где её заведомо нет - то есть сразу можно определить, что там нет строки. И вот на это уходит время.



Отредактировано py.user.next (Июнь 8, 2020 01:50:54)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version