parallel/serial execute accepts several arguments now
This commit is contained in:
@ -24,7 +24,7 @@ def run_check(clargs):
|
|||||||
|
|
||||||
get_data = DataGetter(clargs.timeout, clargs.quiet)
|
get_data = DataGetter(clargs.timeout, clargs.quiet)
|
||||||
run = serial if clargs.serial else parallel
|
run = serial if clargs.serial else parallel
|
||||||
data = run(get_data, pvs, chans)
|
data = run(get_data, pvs, names=chans)
|
||||||
|
|
||||||
df = pd.DataFrame(data).T
|
df = pd.DataFrame(data).T
|
||||||
df = df.infer_objects() #TODO: why is this needed?
|
df = df.infer_objects() #TODO: why is this needed?
|
||||||
|
@ -1,20 +1,21 @@
|
|||||||
from concurrent.futures import ThreadPoolExecutor
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
|
||||||
|
|
||||||
def parallel(func, targets, names=None):
|
def parallel(func, *targets, names=None):
|
||||||
with ThreadPoolExecutor() as executor:
|
with ThreadPoolExecutor() as executor:
|
||||||
results = executor.map(func, targets)
|
results = executor.map(func, *targets)
|
||||||
if names:
|
if names is not None:
|
||||||
return dict(zip(names, results))
|
return dict(zip(names, results))
|
||||||
else:
|
else:
|
||||||
return list(results)
|
return list(results)
|
||||||
|
|
||||||
|
|
||||||
def serial(func, targets, names=None):
|
def serial(func, *targets, names=None):
|
||||||
if names:
|
targets = zip(*targets)
|
||||||
return {n: func(t) for n, t in zip(names, targets)}
|
if names is not None:
|
||||||
|
return {n: func(*t) for n, t in zip(names, targets)}
|
||||||
else:
|
else:
|
||||||
return [func(t) for t in targets]
|
return [func(*t) for t in targets]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user