[userspace,v2] sepolicy: generate man pages in parallel
diff mbox series

Message ID 20191018092005.3198-1-omosnace@redhat.com
State Accepted
Headers show
Series
  • [userspace,v2] sepolicy: generate man pages in parallel
Related show

Commit Message

Ondrej Mosnacek Oct. 18, 2019, 9:20 a.m. UTC
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

Comments

Stephen Smalley Oct. 22, 2019, 12:25 p.m. UTC | #1
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)
>

Patch
diff mbox series

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)