python并发进程

# -*- 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.

猜你喜欢

转载自blog.csdn.net/weixin_33595571/article/details/84312387