Python 多进程简单入门

多进程相对多线程来说可以更好的调用cpu资源,那么下边就看一下如何实现

import multiprocessing
import time

def func(msg):
    print("msg:", msg)
    time.sleep(3)
    print("end")
    return msg

if __name__ == "__main__":
    #查询cpu总数
    cores = multiprocessing.cpu_count()
    print cores
    #这里process 可以根据cpu总数量设置进程数量
    pool = multiprocessing.Pool(processes=2)
    print("Adding tasks...")
    results = []
    for i in range(cores):
        msg = "hello %d" % (i)
        results.append(pool.apply_async(func, (msg,)))  # 维持执行的进程总数为processes,当一个进程执行完毕后会添加新的进程进去
    print("Starting tasks...")
    pool.close()
    pool.join()  # 调用join之前,先调用close函数,否则会出错。执行完close后不会有新的进程加入到pool,join函数等待所有子进程结束
    print([r.get() for r in results]) #打印总进程对象里的内容
    print("Sub-process(es) done.")