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
私は3つの期間 - 1/15/60分を持つ必要があります。私は多くのif
ステートメントを使用せずにそれを正しく書くために必要がありますどのように
?
ですから、それぞれの間の遅延での動作を複数回実行したいですか?もしそうなら、各繰り返しの間を遅らせるために 'time.sleep()'を使うことはできませんでした。また、あなたのスクリプトはいつ停止するはずですか? – martineau
あなたは は、のdeletechars(存在する場合)であるsのすべての文字を削除し、テーブルを使用して文字を変換文字 'string.translate(S、テーブル[、のdeletechars])を削除するには、' string.translate'を使用することができますこれは、各文字値の序数で索引付けされた256文字の文字列でなければなりません。 tableがNoneの場合、文字削除ステップのみが実行されます。 –
または、 'cursor.fetchall()'がタプルのリストを返すので、文字列の書式設定を行うことができます –