Search code examples
pythonpython-multiprocessing

Is there a way to automate calling a function multiple times with different args?


I'm trying to start multiple processes targeting a function with different args each time, I would like to know if there's more convenient way to write this:

if __name__ == "__main__":    
    p1 = multiprocessing.Process(target=get_articles, args=[1, 101, 1])
    p2 = multiprocessing.Process(target=get_articles, args=[101, 201, 2])
    p3 = multiprocessing.Process(target=get_articles, args=[201, 301, 3])
    p4 = multiprocessing.Process(target=get_articles, args=[301, 401, 4])
    p5 = multiprocessing.Process(target=get_articles, args=[401, 501, 5])
    p6 = multiprocessing.Process(target=get_articles, args=[501, 601, 6])
    p7 = multiprocessing.Process(target=get_articles, args=[601, 701, 7])
    p8 = multiprocessing.Process(target=get_articles, args=[701, 801, 8])
    p9 = multiprocessing.Process(target=get_articles, args=[801, 901, 9])
    p10 = multiprocessing.Process(target=get_articles, args=[901, 1001, 10])
    p11 = multiprocessing.Process(target=get_articles, args=[1001, 1101, 11])
    p12 = multiprocessing.Process(target=get_articles, args=[1101, 1201, 12])
    p13 = multiprocessing.Process(target=get_articles, args=[1201, 1301, 13])
    p14 = multiprocessing.Process(target=get_articles, args=[1301, 1401, 14])
    p15 = multiprocessing.Process(target=get_articles, args=[1401, 1501, 15])
    p16 = multiprocessing.Process(target=get_articles, args=[1501, 1601, 16])
    p17 = multiprocessing.Process(target=get_articles, args=[1601, 1701, 17])



    p1.start()
    p2.start()
    p3.start()
    p4.start()
    p5.start()
    p6.start()
    p7.start()
    p8.start()
    p9.start()
    p10.start()
    p11.start()
    p12.start()
    p13.start()
    p14.start()
    p15.start()
    p16.start()
    p17.start()

Solution

  • processes = [ multiprocessing.Process(target=get_articles, args=[i*100-99, i*100+1, i]) for i in range(1,18) ]
    for p in processes:
        p.start()