parallel_interleave() maps map_func across its input to produce nested
datasets, and outputs their elements interleaved. Unlike
tf.data.Dataset.interleave, it gets elements from cycle_length nested
datasets in parallel, which increases the throughput, especially in the
presence of stragglers. Furthermore, the sloppy argument can be used to
improve performance, by relaxing the requirement that the outputs are produced
in a deterministic order, and allowing the implementation to skip over nested
datasets whose elements are not readily available when requested.