[Rpm-metadata] [PATCH] Allow auto-setting of workers. via. sysconf SC_NPROCESSORS_ONLN.

seth vidal skvidal at fedoraproject.org
Wed Nov 30 15:47:26 UTC 2011


On Wed, 30 Nov 2011 10:42:32 -0500
James Antill <james at and.org> wrote:

> ---
>  createrepo/__init__.py |    3 +++
>  createrepo/utils.py    |   16 ++++++++++++++++
>  2 files changed, 19 insertions(+), 0 deletions(-)
> 
> diff --git a/createrepo/__init__.py b/createrepo/__init__.py
> index 014765a..2d3514e 100644
> --- a/createrepo/__init__.py
> +++ b/createrepo/__init__.py
> @@ -48,6 +48,7 @@ except ImportError:
>  
>  from utils import _gzipOpen, compressFile, compressOpen,
> checkAndMakeDir, GzipFile, \ checksum_and_rename,
> split_list_into_equal_chunks +from utils import num_cpus_online
>  import deltarpms
>  
>  __version__ = '0.9.9'
> @@ -606,6 +607,8 @@ class MetaDataGenerator:
>              # open the files they created and write them out to our
> metadata # add up the total pkg counts and return that value
>              self._worker_tmp_path = tempfile.mkdtemp() # setting
> this in the base object so we can clean it up later
> +            if self.conf.workers < 1:
> +                self.conf.workers = num_cpus_online()
>              worker_chunks = split_list_into_equal_chunks(pkgfiles,
> self.conf.workers) worker_cmd_dict = {}
>              worker_jobs = {}
> diff --git a/createrepo/utils.py b/createrepo/utils.py
> index c5cec64..16c57db 100644
> --- a/createrepo/utils.py
> +++ b/createrepo/utils.py
> @@ -200,6 +200,22 @@ def split_list_into_equal_chunks(seq,
> num_chunks): 
>      return out
>  
> +def num_cpus_online(unknown=1):
> +    if not hasattr(os, "sysconf"):
> +        return unknown
> +
> +    if not os.sysconf_names.has_key("SC_NPROCESSORS_ONLN"):
> +        return unknown
> +
> +    ncpus = os.sysconf("SC_NPROCESSORS_ONLN")
> +    try:
> +        if int(ncpus) > 0:
> +            return ncpus
> +    except:
> +        pass
> +
> +    return unknown
> +
>  
>  class MDError(Exception):
>      def __init__(self, value=None):




ACK
-sv


More information about the Rpm-metadata mailing list