Python:进程与进程池

来源:互联网 发布:网络伤感情歌2016 编辑:程序博客网 时间:2024/06/05 09:48

进程使用方法

#!/usr/bin/env python  #coding=utf-8from multiprocessing import Process;def main():    servers = func.mysql_query('select id,host,port,username,password,tags from db_servers_mysql where is_delete=0 and monitor=1;')    logger.info("check mysql controller started.")    if servers:         plist = []         for row in servers:             server_id=row[0]             host=row[1]             port=row[2]             username=row[3]             password=row[4]             tags=row[5]             p = Process(target = check_mysql, args = (host,port,username,password,server_id,tags))             plist.append(p)         for p in plist:             p.start()         time.sleep(10)         for p in plist:             p.terminate()         for p in plist:             p.join()             else:         logger.warning("check mysql: not found any servers")    logger.info("check mysql controller finished.")if __name__=='__main__':    main()


进程池使用方法  

#!/usr/bin/env python  #coding=utf-8import timeimport multiprocessingdef say(i,x):    print '%s %s' % (i,x)    time.sleep(1)    return time.time()if __name__ == "__main__":    p = multiprocessing.Pool(processes=3)    result = []  #申明一个列表,用来存放各进程返回的结果    for i in range(6):        x = 'hello'        result.append(p.apply_async(say, (x,i,)))  #将返回结果append到列表中    p.close()    time.sleep(3)    p.terminate()    p.join()  #调用join之前,先调用close函数,否则会出错。执行完close后不会有新的进程加入到pool,join函数等待所有子进程结束    for res in result:       #循环读出列表返回的结果        print ":::",res.get()




0 0
原创粉丝点击