class ProcessManager(object):
    def __init__(self, is_use_pipe=False):
        self.__process = None
        self.__is_use_pipe = False
        self.__parent_conn = None
        self.__child_conn = None
        if is_use_pipe == True:
            self.__create_pipe()

    @property
    def parent_conn(self):
        return self.__parent_conn

    @property
    def child_conn(self):
        return self.__child_conn

    def __create_pipe(self):
        self.__parent_conn, self.__child_conn = Pipe()
        self.__is_use_pipe = True

    def kick(self, target, args={}):
        if self.child_conn is not None:
            args["child_conn"] = self.child_conn
        self.__process = Process(target=target, args=(args, ))
        self.__process.start()
        #self.parent_conn.send({
        #    "hoge": "hoge"
        #})
        return

    def is_alive(self):
        if self.__process is None:
            return False
        return self.__process.is_alive()

    def exitcode(self):
        if self.__process is None:
            return None
        return self.__process.exitcode()

    def send_packet(self, packet):
        if packet is not None:
            if self.parent_conn is not None:
                self.parent_conn.send(packet)
Esempio n. 2
0
def multiprocessing_execute_py(n_threads, n_jobs_per_thread, job_size,
                               job_batch_size, worker_arguments,
                               generate_payload_options, do_print):
    procs = []
    for thread_index in range(0, n_threads):
        p = Process(target=submit_tasks_batch,
                    args=(n_jobs_per_thread, job_size, job_batch_size,
                          worker_arguments, generate_payload_options,
                          thread_index, do_print))

        p.start()
        procs.append(p)

    for p in procs:
        logging.info("Wainting on {}".format(p))
        p.join()

    for p in procs:
        if p.exitcode is not 0:
            logging.error("One process did not exit successfully {}".format(
                p.exitcode()))
            raise Exception("Exit code not null")