class_docstr: manages a local index, that does the coarse quantization and a set
  of sub_indexes. The sub_indexes search a subset of the inverted
  lists. The SplitPerListIndex merges results from the sub-indexes
class_docstr_tok: ["manages","a","local","index",",","that","does","the","coarse","quantization","and","a","set","of","sub_indexes",".","The","sub_indexes","search","a","subset","of","the","inverted","lists",".","The","SplitPerListIndex","merges","results","from","the","sub-indexes"]
code: def __init__(self, index, sub_indexes):
      self.index = index
      self.code_size = faiss.extract_index_ivf(index.index).code_size
      self.sub_indexes = sub_indexes
      self.ni = len(self.sub_indexes)
      # pool of threads. Each thread manages one sub-index.
      self.pool = ThreadPool(self.ni)
      self.verbose = False
  
imports: import time
  from faiss.contrib import rpc
  import combined_index
  import argparse
  from multiprocessing.pool import ThreadPool
  import faiss
  import numpy
label_desc: Use image node_id 1 to create a new SplitPerListIndex object  with example: obj = SplitPerListIndex(index, sub_indexes)