# The selected channel channel_index = imp4D.getChannel() stack2 = ImageStack(imp4D.width, imp4D.height) depth = imp4D.getNSlices() n_frames = imp4D.getNFrames() def getProcessor(frame_index): syncPrint("getting %i" % frame_index) stack_index = imp4D.getStackIndex(channel_index, slice_index, frame_index) return stack.getProcessor(stack_index).convertToShort(False) exe = Executors.newFixedThreadPool(32) try: futures = [ exe.submit(Task(getProcessor, frame_index)) for frame_index in xrange(n_frames) ] imp2 = None for f in futures: stack2.addSlice(f.get()) if imp2 is None and stack2.size() > 1: imp2 = ImagePlus("hyperslice at %i" % slice_index, stack2) imp2.show() finally: exe.shutdownNow()