def multiprocess_find_blocks(profiles, window, n_blocks=None,
block_size=None, n_jobs=-1):
"""Find blocks in profiles (parallel version)."""
intervals = compute_intervals(
size=len(profiles), n_blocks=n_blocks, block_size=block_size)
if n_jobs == -1:
pool = mp.Pool()
else:
pool = mp.Pool(n_jobs)
results = [apply_async(pool, serial_find_blocks,
args=(dict(profiles.items()[start:end]),
window))
for start, end in intervals]
dicts = [p.get() for p in results]
pool.close()
pool.join()
blocks = {k: v for d in dicts for k, v in d.items()}
return blocks
评论列表
文章目录