Message ID | 20191018092005.3198-1-omosnace@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [userspace,v2] sepolicy: generate man pages in parallel | expand |
On 10/18/19 5:20 AM, Ondrej Mosnacek wrote: > Generating man pages takes a lot of time. Do it in parallel to speed up > the process. > > Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com> Thanks, applied. > --- > python/sepolicy/sepolicy.py | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > > Changes in v2: > - use multiprocessing.Pool, which reacts better to interruption > > diff --git a/python/sepolicy/sepolicy.py b/python/sepolicy/sepolicy.py > index 1934cd86..7b223065 100755 > --- a/python/sepolicy/sepolicy.py > +++ b/python/sepolicy/sepolicy.py > @@ -25,6 +25,7 @@ import os > import sys > import selinux > import sepolicy > +from multiprocessing import Pool > from sepolicy import get_os_version, get_conditionals, get_conditionals_format_text > import argparse > PROGNAME = "policycoreutils" > @@ -326,8 +327,13 @@ def gen_gui_args(parser): > gui.set_defaults(func=gui_run) > > > +def manpage_work(domain, path, root, source_files, web): > + from sepolicy.manpage import ManPage > + m = ManPage(domain, path, root, source_files, web) > + print(m.get_man_page_path()) > + > def manpage(args): > - from sepolicy.manpage import ManPage, HTMLManPages, manpage_domains, manpage_roles, gen_domains > + from sepolicy.manpage import HTMLManPages, manpage_domains, manpage_roles, gen_domains > > path = args.path > if not args.policy and args.root != "/": > @@ -340,9 +346,11 @@ def manpage(args): > else: > test_domains = args.domain > > + p = Pool() > for domain in test_domains: > - m = ManPage(domain, path, args.root, args.source_files, args.web) > - print(m.get_man_page_path()) > + p.apply_async(manpage_work, [domain, path, args.root, args.source_files, args.web]) > + p.close() > + p.join() > > if args.web: > HTMLManPages(manpage_roles, manpage_domains, path, args.os) >
diff --git a/python/sepolicy/sepolicy.py b/python/sepolicy/sepolicy.py index 1934cd86..7b223065 100755 --- a/python/sepolicy/sepolicy.py +++ b/python/sepolicy/sepolicy.py @@ -25,6 +25,7 @@ import os import sys import selinux import sepolicy +from multiprocessing import Pool from sepolicy import get_os_version, get_conditionals, get_conditionals_format_text import argparse PROGNAME = "policycoreutils" @@ -326,8 +327,13 @@ def gen_gui_args(parser): gui.set_defaults(func=gui_run) +def manpage_work(domain, path, root, source_files, web): + from sepolicy.manpage import ManPage + m = ManPage(domain, path, root, source_files, web) + print(m.get_man_page_path()) + def manpage(args): - from sepolicy.manpage import ManPage, HTMLManPages, manpage_domains, manpage_roles, gen_domains + from sepolicy.manpage import HTMLManPages, manpage_domains, manpage_roles, gen_domains path = args.path if not args.policy and args.root != "/": @@ -340,9 +346,11 @@ def manpage(args): else: test_domains = args.domain + p = Pool() for domain in test_domains: - m = ManPage(domain, path, args.root, args.source_files, args.web) - print(m.get_man_page_path()) + p.apply_async(manpage_work, [domain, path, args.root, args.source_files, args.web]) + p.close() + p.join() if args.web: HTMLManPages(manpage_roles, manpage_domains, path, args.os)
Generating man pages takes a lot of time. Do it in parallel to speed up the process. Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com> --- python/sepolicy/sepolicy.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) Changes in v2: - use multiprocessing.Pool, which reacts better to interruption