# -*- coding: utf-8 -*-
"""
Created on Tue Nov 20 23:23:35 2018
#QQ群:476842922(欢迎加群讨论学习)
@author: Administrator
"""
#coding: utf-8
import multiprocessing
import time
def func(msg):
print("msg:", msg)
time.sleep(3)
print("end")
return msg
if __name__ == "__main__":
cores = multiprocessing.cpu_count()#返回当前系统有多少个CPU
pool = multiprocessing.Pool(processes=cores)#创建cores进程池
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.")
Adding tasks…
Starting tasks…
[‘hello 0’, ‘hello 1’, ‘hello 2’, ‘hello 3’, ‘hello 4’, ‘hello 5’, ‘hello 6’, ‘hello 7’]
Sub-process(es) done.