mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix #395 (Build scripts: Fix thread leak)
This commit is contained in:
parent
baa5bf6a5b
commit
87073a4536
@ -9,6 +9,7 @@ __copyright__ = '2014, Kovid Goyal <kovid at kovidgoyal.net>'
|
|||||||
import subprocess
|
import subprocess
|
||||||
from multiprocessing.dummy import Pool
|
from multiprocessing.dummy import Pool
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
from contextlib import closing
|
||||||
|
|
||||||
from setup.build_environment import cpu_count
|
from setup.build_environment import cpu_count
|
||||||
|
|
||||||
@ -30,22 +31,24 @@ def create_job(cmd, human_text=None):
|
|||||||
|
|
||||||
def parallel_build(jobs, log, verbose=True):
|
def parallel_build(jobs, log, verbose=True):
|
||||||
p = Pool(cpu_count)
|
p = Pool(cpu_count)
|
||||||
for ok, stdout, stderr in p.imap(run_worker, jobs):
|
with closing(p):
|
||||||
if verbose or not ok:
|
for ok, stdout, stderr in p.imap(run_worker, jobs):
|
||||||
log(stdout)
|
if verbose or not ok:
|
||||||
if stderr:
|
log(stdout)
|
||||||
log(stderr)
|
if stderr:
|
||||||
if not ok:
|
log(stderr)
|
||||||
return False
|
if not ok:
|
||||||
return True
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def parallel_check_output(jobs, log):
|
def parallel_check_output(jobs, log):
|
||||||
p = Pool(cpu_count)
|
p = Pool(cpu_count)
|
||||||
for ok, stdout, stderr in p.imap(
|
with closing(p):
|
||||||
partial(run_worker, decorate=False), ((j, '') for j in jobs)):
|
for ok, stdout, stderr in p.imap(
|
||||||
if not ok:
|
partial(run_worker, decorate=False), ((j, '') for j in jobs)):
|
||||||
log(stdout)
|
if not ok:
|
||||||
if stderr:
|
log(stdout)
|
||||||
log(stderr)
|
if stderr:
|
||||||
raise SystemExit(1)
|
log(stderr)
|
||||||
yield stdout
|
raise SystemExit(1)
|
||||||
|
yield stdout
|
||||||
|
Loading…
x
Reference in New Issue
Block a user