#!/usr/bin/python3
import time
import multiprocessing as mp


#results = mp.Queue()

def procx(lineno, item):
    result = 3
    for i in range(0,4):
        time.sleep(2)
        print("\t" + str(lineno) + ": king working on " + str(item) + " ... ")
#    queue.put([lineno, item, result])
    return [lineno, item, result]

todolist=[("1","q"),("2","w"),("qwe","e"),("o", "f"),("g", "lk"),("h", "i"),("last","content")]

if __name__ == "__main__":
    maxproc = 3
    #mp.set_start_method('spawn')
    #queue = mp.Queue()
    pool = mp.Pool(processes = maxproc)
    try:
        results = pool.starmap(procx, todolist)
    except KeyboardInterrupt:
        pass
    for i in results:
        print("result: [", i[0], "/", i[1], "/", i[2], "]")

#    proclist = []
#    maxproc = 3
#    ctr = 0
#    while todolist or proclist:
#        finished = 0
#        for i in proclist:
#            if not i.is_alive():
#                print("Process xxx finished, removing from list.")
#                i.join()
#                proclist.remove(i)
#                finished += 1
#        while len(proclist) < maxproc and todolist:
#            ctr += 1
#            item = todolist.pop(0)
#            p = Process(target=procx, args=(ctr, item))
#            print("Starting process for num", str(ctr), "item is:", str(item))
#            p.start()
#            proclist.append([p, ctr, item])
#        time.sleep(1)
#    print("All done")
