return
if self._prefetch_threads is None:
self._prefetch_queue = Queue.Queue()
- self._prefetch_threads = [threading.Thread(target=worker, args=(self,))]
+ self._prefetch_threads = [threading.Thread(target=worker, args=(self,)),
+ threading.Thread(target=worker, args=(self,))]
self._prefetch_threads[0].start()
+ self._prefetch_threads[1].start()
self._prefetch_queue.put(locator)
class ArvadosFile(object):
def readfrom(self, offset, size, num_retries):
if size == 0 or offset >= self.size():
return ''
- if self._keep is None:
- self._keep = KeepClient(num_retries=num_retries)
data = []
for lr in locators_and_ranges(self._segments, offset, size + config.KEEP_BLOCK_SIZE):
class Collection(CollectionBase):
- def __init__(self, parent=None, manifest_locator_or_text=None, api_client=None,
+ def __init__(self, manifest_locator_or_text=None, parent=None, api_client=None,
keep_client=None, num_retries=0, block_manager=None):
self._parent = parent
@_populate_first
def __iter__(self):
- self._items.iterkeys()
+ return self._items.iterkeys()
@_populate_first
def iterkeys(self):
- self._items.iterkeys()
+ return self._items.iterkeys()
@_populate_first
def __getitem__(self, k):