Hi,

I am using this example: http://spartanideas.msu.edu/2014/06/20/an-introduction-to-parallel-programming-using-pythons-multiprocessing-module/

I am sending and receiving communication from the worker processes.

Two issues. the join is only getting to the process and waiting.
When I comment out the .join() process the output.get() appends the previous process and therefore the returned output keeps getting longer and longer after each process returns its output.

hostnames is an array of hostnames.

here is my code from main():

    # Define an output queue
    output = mp.Queue()

    # Setup a list of processes that we want to run
processes = [mp.Process(target=worker, args=(hostnames[x], output)) for x in range(len(hostnames))]

    # Run processes
    for p in processes:
        print "start: {}".format(p)
        p.start()

    time.sleep(6)
    print "processes: {}".format(processes)

    # Exit the completed processes
    '''for p in processes:
        print "join: {}".format(p)
        p.join()'''

    print "got here"
    # Get process results from the output queue
    # results = [output.get() for p in processes]

    io = StringIO()
    count = 0
    for p in processes:
        found_output = output.get()
        print "returned {}".format(p)
        io.write (found_output)
zipArchive.writestr(hostnames[count] + "." + content['sitename'] + '.config.txt', io.getvalue())
        count = count + 1
    io.close()


def worker(hostname, output):
.
.
.
        output.put(template_output)


Cheers

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to