python notifying calling script that multiprocessing tasks have finished at lower level scripts
Daiyue Weng
daiyueweng at gmail.com
Fri Apr 13 12:08:33 EDT 2018
Hi, I have a master script that executes two sequences (lists) of child
scripts, i.e. script_1 to script_3, and script_4 to_script_6 (the structure
is attached as a png file).
The execution is sequential, e.g. running script_1, then 2 then 3.
After executing the 1st sequence (script_1 to 3), master will execute the
2nd sequence (script_4 to 6).
Each child script will be calling a multiprocessing function to process a
task.
Master script is like,
for seq in seqs_to_launch:
for script in seq:
script().execute(data)
Each child script is like,
import multi_process_update
class Script_n():
def execute(self, data):
# some data processing
multi_process_task(data_task, task_name)
The multiprocessing function is like,
def multi_process_task(tasks, task_name):
cores_to_use = how_many_core()
handler = task_handling(task_name) # task handling class
task_blocks = slice_list(tasks, cores_to_use)
for block in task_blocks:
# spawn processes for each row block assigned to every cpu core
p = multiprocessing.Process(target=handler.execute, args=(block,))
p.start()
I like to know how to notify the master when the 2nd sequence is finished
that all multiprocess tasks (seq 1 and 2) are completed, and then maybe
close the multiprocessing.
thanks
More information about the Python-list
mailing list