python——多进程学习

# multiprocessing包是Python中的多进程管理包。与threading.Thread类似,它可以利用multiprocessing.Process对象来创建一个进程。
# 进程池 (Process Pool)可以创建多个进程。
# apply_async(func,args)  从进程池中取出一个进程执行func,args为func的参数。它将返回一个AsyncResult的对象,你可以对该对象调用get()方法以获得结果。
# close()  进程池不再创建新的进程
# join()   wait进程池中的全部进程。必须对Pool先调用close()方法才能join。
# 阻塞当前进程,直到调用join方法的那个进程执行完,再继续执行当前进程。

from multiprocessing import Pool
import os, time

def long_time_task(name):
    print ('Run task %s (%s)...' % (name, os.getpid()))
    start = time.time()
    time.sleep(3)
    end = time.time()
    print ('Task %s runs %0.2f seconds.' % (name, (end - start)))

if __name__=='__main__':
    print ('Parent process %s.' % os.getpid())
    p = Pool()
    for i in range(4):
        p.apply_async(long_time_task, args=(i,))
    print ('Waiting for all subprocesses done...')
    p.close()
    p.join()
    print ('All subprocesses done.')
原文地址:https://www.cnblogs.com/mentiantian/p/10407365.html