首页 > 数据库 > Oracle > Python多进程编程(一):初探
[root@localhost pydoc]# ./tmp.py worker 0 worker 1 worker 2 worker 3 worker 4 [root@localhost pydoc]# ./tmp.py worker 0 worker 1 worker 2 worker 4 worker 3
[root@localhost pydoc]# cat tmp.py
#!/usr/bin/env python
#coding=utf-8
from multiprocessing import Process
def worker(num):
"""test python multi process"""
print \'worker\',num
return
def main():
jobs = []
for i in range(5):
p = Process(target=worker,args=(i,))
jobs.append(p)
p.start()
if __name__==\'__main__\':
main()[root@localhost pydoc]# cat tmp.py
#!/usr/bin/env python
#coding=utf-8
from multiprocessing import Process
def worker(num):
"""test python multi process"""
print \'worker\',num
return
def main():
jobs = []
for i in range(5):
p = Process(target=worker,args=(i,))
jobs.append(p)
p.start()
##to avoid defunct process,you should call join()
for j in jobs:
j.join()
if __name__==\'__main__\':
main()[root@localhost mysqlmtop]# mtopctl status mysql mtop is not run! [root@localhost mysqlmtop]# mtopctl start nohup: 把输出追加到"nohup.out" mysql mtop start success! [root@localhost mysqlmtop]# mtopctl status mysql mtop is run! [root@localhost mysqlmtop]# ps -ef | grep mtop root 4463 4446 0 11:21 pts/2 00:00:00 vim mtopd.py root 7119 1 0 14:50 pts/3 00:00:00 /bin/bash /usr/local/bin/mtopctl start root 7121 7119 1 14:50 pts/3 00:00:00 python ./mtopd.py root 7125 7121 0 14:50 pts/3 00:00:00 python ./mtopd.py root 7126 7121 0 14:50 pts/3 00:00:00 python ./mtopd.py root 7129 7121 0 14:50 pts/3 00:00:00 python ./mtopd.py root 7130 7121 0 14:50 pts/3 00:00:00 python ./mtopd.py root 7133 7121 0 14:50 pts/3 00:00:00 python ./mtopd.py root 7134 7121 0 14:50 pts/3 00:00:00 python ./mtopd.py root 7186 6613 0 14:50 pts/3 00:00:00 grep mtop
[root@localhost mysqlmtop]# cat mtopd.py
#!/bin/env python
#coding:utf-8
import os, sys, string, time, datetime, traceback;
from multiprocessing import Process;
import global_functions as func
def job_run(script_name,times):
while True:
os.system("./"+script_name)
time.sleep(int(times))
def main():
print("%s: controller started." % (time.strftime(\'%Y-%m-%d %H:%M:%S\', time.localtime()),))
monitor = func.get_option(\'monitor\')
monitor_status = func.get_option(\'monitor_status\')
monitor_replication = func.get_option(\'monitor_replication\')
monitor_process = func.get_option(\'monitor_process\')
alarm = func.get_option(\'alarm\')
frequency_monitor = func.get_option(\'frequency_monitor\')
frequency_alarm = func.get_option(\'frequency_alarm\')
kill_process = func.get_option(\'kill_process\')
joblist = []
if monitor=="1":
if monitor_status=="1":
job = Process(target = job_run, args = (\'check_mysql_status_ext.py\',frequency_monitor))
joblist.append(job)
job.start()
job = Process(target = job_run, args = (\'check_mysql_status.py\',frequency_monitor))
joblist.append(job)
job.start()
if monitor_replication=="1":
job = Process(target = job_run, args = (\'check_mysql_replication.py\',frequency_monitor))
joblist.append(job)
job.start()
if monitor_process=="1":
job = Process(target = job_run, args = (\'check_mysql_process.py\',4))
joblist.append(job)
job.start()
if alarm=="1":
job = Process(target = job_run, args = (\'alarm_mysql.py\',frequency_alarm))
joblist.append(job)
job.start()
if kill_process=="1":
job = Process(target = job_run, args = (\'admin_mysql_kill_process.py\',3))
joblist.append(job)
job.start()
for job in joblist:
job.join();
print("%s: controller finished." % (time.strftime(\'%Y-%m-%d %H:%M:%S\', time.localtime()),))
if __name__ == \'__main__\':
main()来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26515977/viewspace-1208273/ ,如需转载,请注明出处,否则将追究法律责任。