Re: [PATCH] Allow auto-setting of workers. via. sysconf SC_NPROCESSORS_ONLN.
seth vidal <[email protected]> Wed, 30 Nov 2011 10:47:26 -0500
| Newsgroups | gmane.linux.rpm.metadata |
|---|---|
| Message-ID | <20111130104726.640c613a@opus> |
On Wed, 30 Nov 2011 10:42:32 -0500 James Antill <[email protected]> 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