2017-02-14 6 views
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ステートメントを使用せずにそれを正しく書くために必要がありますどのように

+0

ですから、それぞれの間の遅延での動作を複数回実行したいですか?もしそうなら、各繰り返しの間を遅らせるために 'time.sleep()'を使うことはできませんでした。また、あなたのスクリプトはいつ停止するはずですか? – martineau

+0

あなたは は、のdeletechars(存在する場合)であるsのすべての文字を削除し、テーブルを使用して文字を変換文字 'string.translate(S、テーブル[、のdeletechars])を削除するには、' string.translate'を使用することができますこれは、各文字値の序数で索引付けされた256文字の文字列でなければなりません。 tableがNoneの場合、文字削除ステップのみが実行されます。 –

+0

または、 'cursor.fetchall()'がタプルのリストを返すので、文字列の書式設定を行うことができます –

答えて

0

彼らは何らかの形で関係していると、お互いに由来することができる場合は、変換を行う関数を書き、それらの上のコマンドライン引数とちょうどループとしてすべてそこに間隔を受け入れるか、またはすることができます。

関連する問題