您的位置:首页 > 编程语言 > Python开发

Python:进程与进程池

2016-07-01 18:18 441 查看
进程使用方法

#!/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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: