进程使用方法
#!/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()