简体   繁体   中英

Python Multiprocessing: Running each iteration of multiple for loops in parallel

I have two loops in python. Here is some pseudo code. I would like to run both those functions and each iteration of each of those functions at the same time. So in this example, there would be 8 processes going on at once. I know you can use "Process", but I just don't know how to incorporate an iterable. Please let me know, thanks!

import...

def example1(iteration):
    print('stuff')

def example2(iteration):
    print('stuff')

if __name__ == '__main__':  
    freeze_support()
    pool = multiprocessing.Pool(4)
    iteration = [1,2,3,4]
    pool.map(example1,iteration)

Assuming they don't need to be kicked off at exactly the same time I think map_async is what you want.

In the example bellow we can print the result from example2 before example1 has finished even though example1 was kicked off first.

import multiprocessing
import time

def example1(iteration):
    time.sleep(1)
    return 1

def example2(iteration):
    return 2

if __name__ == '__main__':
    pool = multiprocessing.Pool(4)
    iteration = [1,2,3,4]
    result1 = pool.map_async(example1, iteration)
    result2 = pool.map_async(example2, iteration)
    print(result2.get())
    print(result1.get())

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM