mercredi 29 juin 2016

Python multiprocessing creates sub-process using wrong function

I'm trying to write code that create sub-process using another module(demo_2.py),
and exit program if i get wanted value on sub-processes.

But result looks like this.

Unexpected action on my code. This is a screenshot of the result

It seems that demo_1 makes two sub-process that run demo_1 and load demo_2.
I want to make sub-process only runs demo_2.

What did i missed?

demo_1.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from multiprocessing import Process,Queue
import sys
import demo_2 as A

def multi_process():
    print ("Function multi_process called!")
    process_status_A = Queue()
    process_status_B = Queue()
    A_Process = Process(target = A.process_A, args = (process_status_A,))
    B_Process = Process(target = A.process_A, args = (process_status_B,))
    A_Process.start()
    B_Process.start()
    while True:
        process_status_output_A = process_status_A.get()
        process_status_output_B = process_status_B.get()
        if process_status_output_A == 'exit' and process_status_output_B == 'exit':
            print ("Success!")
            break
    process_status_A.close()
    process_status_B.close()
    A_Process.join()
    B_Process.join()
    sys.exit()


print ("demo_1 started")
if __name__ == "__main__":
    multi_process()

demo_2.py

class process_A(object):
    def __init__(self, process_status):
        print ("demo_2 called!")
        process_status.put('exit')
    def call_exit(self):
        pass

Aucun commentaire:

Enregistrer un commentaire