0
我的脚本存在问题,它正在计算数据库的平均值。在定义的时间段执行操作?
下面是代码:
import MySQLdb
import argparse
import time
#args section
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--ip", required=True)
parser.add_argument("-r", "--ram", action="store_true", required=False)
parser.add_argument("-c", "--cpu", action="store_true", required=False)
parser.add_argument("-t", "--time", type=int, required=True)
args = parser.parse_args()
db1 = MySQLdb.connect(args.ip ,user="root",passwd="root")
cursor = db1.cursor()
use_db = "USE env_data;"
starttime = time.time()
def one_min():
one_minute = time.sleep(60.0 - ((time.time() - starttime) % 60.0))
return one_minute
def cpu_usage():
cpu_select = "SELECT cpu_usage FROM env_data;"
cpu_avg = "SELECT SUM(cpu_usage)/count(cpu_usage) from env_data;"
cursor.execute(use_db)
cursor.execute(cpu_select)
cursor.execute(cpu_avg)
result = cursor.fetchall()
result = str(result) #converted to string for replace operations
for i in ['(',')',',', "'",'[', ']']:
if i in result:
result = result.replace(i, '')
print result
def ram_usage():
mem_select = "SELECT mem_usage FROM env_data;"
mem_avg = "SELECT SUM(mem_usage)/count(mem_usage) from env_data;"
cursor.execute(use_db)
cursor.execute(mem_select)
cursor.execute(mem_avg)
result = cursor.fetchall()
result = str(result)
for i in ['(',')',',', "'",'[', ']']:
if i in result:
result = result.replace(i, '')
print result
if args.cpu:
cpu_usage()
elif args.ram:
ram_usage()
用户需要键入--time
参数,以限定的时间延迟。例如:
my_script.py -i localhost -c -t 60
我需要有三个时间段--1/15/60分钟。
如何正确写入而不使用多个if
语句?
所以你想多次运行一个操作,每个操作之间有一个延迟?如果是这样,难道你不能只使用'time.sleep()'在每次迭代之间延迟。另外,你的脚本应该什么时候停止? – martineau
可以使用'string.translate'来删除字符'string.translate(s,table [,deletechars]) 删除s中的所有字符(如果存在),然后使用表格翻译字符,它必须是一个256个字符的字符串,为每个字符值提供翻译,并按其序号进行索引。如果table是None,那么只执行字符删除步骤。' –
或者你可以做字符串格式化,因为'cursor.fetchall()'返回一个元组列表 –