Move join_with_timeout into the utils module

This commit is contained in:
Kovid Goyal 2013-10-16 13:53:17 +05:30
parent e60dce0133
commit 8cc9440847
2 changed files with 17 additions and 12 deletions

View File

@ -8,7 +8,6 @@ __copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
import itertools, operator, os
from types import MethodType
from time import time
from threading import Event, Thread
from Queue import LifoQueue
from functools import wraps, partial
@ -23,6 +22,7 @@ from PyQt4.Qt import (
from calibre import fit_image, prints, prepare_string_for_xml
from calibre.ebooks.metadata import fmt_sidx
from calibre.utils import join_with_timeout
from calibre.gui2 import gprefs, config
from calibre.gui2.library.caches import CoverCache, ThumbnailCache
from calibre.utils.config import prefs, tweaks
@ -482,17 +482,6 @@ class CoverDelegate(QStyledItemDelegate):
return True
return False
def join_with_timeout(q, timeout=2):
q.all_tasks_done.acquire()
try:
endtime = time() + timeout
while q.unfinished_tasks:
remaining = endtime - time()
if remaining <= 0.0:
raise RuntimeError('Waiting for queue to clear timed out')
q.all_tasks_done.wait(remaining)
finally:
q.all_tasks_done.release()
# }}}
# The View {{{

View File

@ -7,3 +7,19 @@ __docformat__ = 'restructuredtext en'
Miscelleaneous utilities.
'''
from time import time
def join_with_timeout(q, timeout=2):
''' Join the queue q with a specified timeout. Blocks until all tasks on
the queue are done or times out with a runtime error. '''
q.all_tasks_done.acquire()
try:
endtime = time() + timeout
while q.unfinished_tasks:
remaining = endtime - time()
if remaining <= 0.0:
raise RuntimeError('Waiting for queue to clear timed out')
q.all_tasks_done.wait(remaining)
finally:
q.all_tasks_done.release()