#!/usr/bin/env python
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
"""Generic ways to parallelize jobs."""
# ChunkingMixin {{{1
class ChunkingMixin:
"""Generic Chunking helper methods."""
def query_chunked_list(self, possible_list, this_chunk, total_chunks, sort=
False):
"""Split a list of items into a certain number of chunks and
return the subset of that will occur
in this chunk.
Ported
from build.l10n.getLocalesForChunk
in build/tools.
"""
if sort:
possible_list = sorted(possible_list)
else:
# Copy to prevent altering
possible_list = possible_list[:]
length = len(possible_list)
for c
in range(
1, total_chunks +
1):
n = length // total_chunks
# If the total number of items isn't evenly divisible by the
# number of chunks, we need to append one more onto some chunks
if c <= (length % total_chunks):
n +=
1
if c == this_chunk:
return possible_list[
0:n]
del possible_list[
0:n]
¤ Dauer der Verarbeitung: 0.2 Sekunden
¤
*© Formatika GbR, Deutschland