You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.161
Former-commit-id: 4db48158d3a35497b8f118ab21b5f08ac3d86d98
This commit is contained in:
parent
37fbf886a3
commit
e19d552987
54
external/llvm/tools/opt-viewer/optpmap.py
vendored
Normal file
54
external/llvm/tools/opt-viewer/optpmap.py
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
import sys
|
||||
import multiprocessing
|
||||
|
||||
|
||||
_current = None
|
||||
_total = None
|
||||
|
||||
|
||||
def _init(current, total):
|
||||
global _current
|
||||
global _total
|
||||
_current = current
|
||||
_total = total
|
||||
|
||||
|
||||
def _wrapped_func(func_and_args):
|
||||
func, argument, should_print_progress = func_and_args
|
||||
|
||||
if should_print_progress:
|
||||
with _current.get_lock():
|
||||
_current.value += 1
|
||||
sys.stdout.write('\r\t{} of {}'.format(_current.value, _total.value))
|
||||
sys.stdout.flush()
|
||||
|
||||
return func(argument)
|
||||
|
||||
|
||||
def pmap(func, iterable, processes, should_print_progress, *args, **kwargs):
|
||||
"""
|
||||
A parallel map function that reports on its progress.
|
||||
|
||||
Applies `func` to every item of `iterable` and return a list of the
|
||||
results. If `processes` is greater than one, a process pool is used to run
|
||||
the functions in parallel. `should_print_progress` is a boolean value that
|
||||
indicates whether a string 'N of M' should be printed to indicate how many
|
||||
of the functions have finished being run.
|
||||
"""
|
||||
global _current
|
||||
global _total
|
||||
_current = multiprocessing.Value('i', 0)
|
||||
_total = multiprocessing.Value('i', len(iterable))
|
||||
|
||||
func_and_args = [(func, arg, should_print_progress,) for arg in iterable]
|
||||
if processes <= 1:
|
||||
result = map(_wrapped_func, func_and_args, *args, **kwargs)
|
||||
else:
|
||||
pool = multiprocessing.Pool(initializer=_init,
|
||||
initargs=(_current, _total,),
|
||||
processes=processes)
|
||||
result = pool.map(_wrapped_func, func_and_args, *args, **kwargs)
|
||||
|
||||
if should_print_progress:
|
||||
sys.stdout.write('\r')
|
||||
return result
|
Reference in New Issue
Block a user