Improve speed: first minimization of browser creation calls

This commit is contained in:
Sengian 2010-12-09 00:13:08 +01:00
parent f766eb871c
commit 8f7bc53128

View File

@ -129,14 +129,15 @@ class BrowserThread(Thread):
self.verbose = verbose self.verbose = verbose
self.timeout = timeout self.timeout = timeout
self.result = None self.result = None
self.br = browser()
Thread.__init__(self) Thread.__init__(self)
def get_result(self): def get_result(self):
return self.result return self.result, self.br
def run(self): def run(self):
try: try:
raw = browser().open_novisit(self.url, timeout=self.timeout).read() raw = self.br.open_novisit(self.url, timeout=self.timeout).read()
except Exception, e: except Exception, e:
report(self.verbose) report(self.verbose)
if callable(getattr(e, 'getcode', None)) and \ if callable(getattr(e, 'getcode', None)) and \
@ -447,7 +448,7 @@ class ResultList(list):
mi.rating = float(ratings[0])/float(ratings[1]) * 5 mi.rating = float(ratings[0])/float(ratings[1]) * 5
return mi return mi
def fill_MI(self, entry, verbose): def fill_MI(self, entry, br, verbose):
try: try:
title = self.get_title(entry) title = self.get_title(entry)
authors = self.get_authors(entry) authors = self.get_authors(entry)
@ -463,14 +464,14 @@ class ResultList(list):
try: try:
mi.comments = self.get_description(entry, verbose) mi.comments = self.get_description(entry, verbose)
mi = self.get_book_info(entry, mi, verbose) mi = self.get_book_info(entry, mi, verbose)
mi.tags = self.get_tags(entry, verbose) mi.tags = self.get_tags(entry, br, verbose)
except: except:
pass pass
return mi return mi
def get_individual_metadata(self, url, verbose): def get_individual_metadata(self, url, br, verbose):
try: try:
raw = browser().open_novisit(url).read() raw = br.open_novisit(url).read()
except Exception, e: except Exception, e:
report(verbose) report(verbose)
if callable(getattr(e, 'getcode', None)) and \ if callable(getattr(e, 'getcode', None)) and \
@ -505,11 +506,11 @@ class ResultList(list):
while len(self) < total_entries: while len(self) < total_entries:
thread = q.get(True) thread = q.get(True)
thread.join() thread.join()
mi = thread.get_result() mi, br = thread.get_result()
if mi is None: if mi is None:
self.append(None) self.append(None)
else: else:
self.append(self.fill_MI(mi, verbose)) self.append(self.fill_MI(mi, br, verbose))
def populate(self, entries, verbose=False, brcall=5): def populate(self, entries, verbose=False, brcall=5):
#multiple entries #multiple entries
@ -581,5 +582,8 @@ def main(args=sys.argv):
if __name__ == '__main__': if __name__ == '__main__':
sys.exit(main()) sys.exit(main())
# import cProfile
# sys.exit(cProfile.run("import calibre.ebooks.metadata.amazonfr; calibre.ebooks.metadata.amazonfr.main()"))
# sys.exit(cProfile.run("import calibre.ebooks.metadata.amazonfr; calibre.ebooks.metadata.amazonfr.main()", "profile_tmp"))
# calibre-debug -e "H:\Mes eBooks\Developpement\calibre\src\calibre\ebooks\metadata\amazonfr.py" -m 5 -a gore -v>data.html # calibre-debug -e "H:\Mes eBooks\Developpement\calibre\src\calibre\ebooks\metadata\amazonfr.py" -m 5 -a gore -v>data.html