Python:进程与进程池

进程使用方法

#!/usr/bin/env python  
#coding=utf-8

from 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-8

import time
import multiprocessing


def 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值