多并发执行程序

# 使用进程池多并发执行程序
from multiprocessing import Pool,Value,Lock,Manager
import os,time,random

import multiprocessing
import logging
import sys

def run_task(name,requestCount,countList):
    # with lock:
    requestCount.value=requestCount.value+1
    print('计数:',requestCount.value)
    countList.append(requestCount.value)
    time.sleep(0.1)
    print('run task %s (%s)'%(name,os.getpid()))

    sys.stdout.flush()

if __name__=="__main__":
    # 进程日志
    # 设置日志输出到控制台
    multiprocessing.log_to_stderr()
    logger=multiprocessing.get_logger()
    logger.setLevel(logging.INFO)

    m=Manager()
    reqeustCount=m.Value('i',0)
    countList=m.list([])
    print('Parent process: ',os.getpid())
    # lock=m.Lock()
    p=Pool()
    for i in range(5):
        p.apply_async(run_task,args=(str(i),reqeustCount,countList))
    p.close()
    p.join()
    print('end!')
    print(reqeustCount.value)
    print(countList)
原文地址:https://www.cnblogs.com/reyinever/p/10858764.html