Exemplo n.º 1
0
def parse_all():
    updated = False
    start = time.mktime(log_start_time.timetuple())
    while not parse.finished_parsing() and not interrupted:
        global cur_time, ddict, initial_values_set
        changetime, changelist = parse.parse_one_slice()
        #Set all variables in this slice
        for (svar, varstr, vtype, val) in changelist:
            if varstr in des:
                ddict[varstr] = val

                if args['freq'] == 0:
                    #check if all initial values are set before writing to csv
                    if not initial_values_set:
                        ivaldict[varstr] = True
                        initial_values_set = (False not in ivaldict.values())
                        if initial_values_set:
                            updated = True
                    else:
                        updated = True
        if args['freq'] and changetime > datetime.timedelta(
                seconds=1. / args['freq']) + cur_time:
            cur_time = changetime
            updated = True

        if updated:
            for k in ddict.keys():
                data[k].append(ddict[k])
            data['time'].append(
                time.mktime(changetime.timetuple()) - start +
                changetime.microsecond / 1e6)
Exemplo n.º 2
0
def parse_all():
    updated = False
    start = time.mktime(log_start_time.timetuple())
    while not parse.finished_parsing() and not interrupted:
        global cur_time, ddict, initial_values_set
        changetime, changelist = parse.parse_one_slice()
        #Set all variables in this slice
        for (svar, varstr, vtype, val) in changelist:
            if varstr in des:
                ddict[varstr] = val     
                
                if args['freq'] == 0:
                    #check if all initial values are set before writing to csv
                    if not initial_values_set:
                        ivaldict[varstr] = True 
                        initial_values_set = (False not in ivaldict.values())
                        if initial_values_set:
                            updated = True
                    else:
                        updated = True
        if args['freq'] and changetime > datetime.timedelta(seconds = 1./args['freq']) + cur_time:
            cur_time = changetime
            updated = True

        if updated:
            for k in ddict.keys():
                data[k].append(ddict[k])
            data['time'].append(time.mktime(changetime.timetuple())-start + changetime.microsecond / 1e6)
Exemplo n.º 3
0
def parse_all():
    last_change_time = log_start_time
    while not parse.finished_parsing() and not interrupted:
        global cur_time, seeking, local_start_time, seek_reverse, seek_forward
        if seek_reverse:
            parse.seek_nearest_snapshot(changetime, prev=True)
            seek_reverse = False
            last_change_time = None

        elif seek_forward:
            parse.seek_nearest_snapshot(changetime, ahead=True)
            seek_forward = False
            last_change_time = None

        parse_start_time = datetime.now()
        changetime, changelist = parse.parse_one_slice()

        with speed_lock:
            current_speed = speed

        if seeking:
            if changetime > seek_time: #seek from snapshot point to desired time
                #Stop seeking
                seeking = False
                dt = timediff(log_start_time, seek_time)
                local_start_time = datetime.now() - \
                                   timedelta(0, dt / current_speed)
        else:
            if last_change_time is not None:
                available_time = timediff(last_change_time, changetime) /\
                                 current_speed
                used_time = timediff(parse_start_time, datetime.now())

                if used_time < available_time:
                    sleep(available_time - used_time)

        cur_time = changetime
        last_change_time = changetime

        #Set all variables in this slice
        for (svar, varstr, vtype, val) in changelist:
            if svar is not None:
                if filtering and varstr not in filtervars:
                    continue
                svar.set(val)

        running.wait()
Exemplo n.º 4
0
def parse_all():
    last_change_time = log_start_time
    while not parse.finished_parsing() and not interrupted:
        global cur_time, seeking, local_start_time, seek_reverse, seek_forward
        if seek_reverse:
            parse.seek_nearest_snapshot(changetime, prev=True)
            seek_reverse = False
            last_change_time = None

        elif seek_forward:
            parse.seek_nearest_snapshot(changetime, ahead=True)
            seek_forward = False
            last_change_time = None

        parse_start_time = datetime.now()
        changetime, changelist = parse.parse_one_slice()

        with speed_lock:
            current_speed = speed

        if seeking:
            if changetime > seek_time:  #seek from snapshot point to desired time
                #Stop seeking
                seeking = False
                dt = timediff(log_start_time, seek_time)
                local_start_time = datetime.now() - \
                                   timedelta(0, dt / current_speed)
        else:
            if last_change_time is not None:
                available_time = timediff(last_change_time, changetime) /\
                                 current_speed
                used_time = timediff(parse_start_time, datetime.now())

                if used_time < available_time:
                    sleep(available_time - used_time)

        cur_time = changetime
        last_change_time = changetime

        #Set all variables in this slice
        for (svar, varstr, vtype, val) in changelist:
            if svar is not None:
                if filtering and varstr not in filtervars:
                    continue
                svar.set(val)

        running.wait()
Exemplo n.º 5
0
def parse_all():
    while not parse.finished_parsing() and not interrupted:
        global cur_time, ddict, initial_values_set
        changetime, changelist = parse.parse_one_slice()
        cur_time = changetime
        updated = False
        #Set all variables in this slice
        for (svar, varstr, vtype, val) in changelist:
            if varstr in des:
                ddict[varstr] = val

                #check if all initial values are set before writing to csv
                if not initial_values_set:
                    ivaldict[varstr] = True
                    initial_values_set = (False not in ivaldict.values())
                    if initial_values_set:
                        update = True
                else:
                    updated = True

        if updated:
            new_row(changetime)
Exemplo n.º 6
0
def parse_all():
    while not parse.finished_parsing() and not interrupted:
        global cur_time, ddict, initial_values_set
        changetime, changelist = parse.parse_one_slice()
        cur_time = changetime
        updated = False
        #Set all variables in this slice
        for (svar, varstr, vtype, val) in changelist:
            if varstr in des:
                ddict[varstr] = val     
                
                #check if all initial values are set before writing to csv
                if not initial_values_set:
                    ivaldict[varstr] = True 
                    initial_values_set = (False not in ivaldict.values())
                    if initial_values_set:
                        update = True
                else:
                    updated = True

        if updated:
            new_row(changetime)
Exemplo n.º 7
0
#     If logging at a constant speed; should be relatively accurate. Not a priority.
PROGRESS_WIDTH = 50


def write_progress(percent):
    pwf = int(round(PROGRESS_WIDTH * (percent / 100.0)))
    pstr = "[" + pwf * '=' + (PROGRESS_WIDTH - pwf) * ' ' + "]"
    sys.stdout.write("\r%s %d%%" % (pstr, percent))
    sys.stdout.flush()


try:
    #Status indication
    total_time_diff = timediff(log_start_time, log_end_time)

    while not parse.finished_parsing():
        current_diff = timediff(log_start_time, cur_time)
        percent = int(round(100.0 * current_diff / total_time_diff))
        write_progress(percent)
        sleep(0.1)

except KeyboardInterrupt:
    interrupted = True

if interrupted:
    print "\nFile generation interrupted."
else:
    write_progress(100)
    out = open(outputfilename, 'w')

    # Convert data to numpy arrays
Exemplo n.º 8
0
# Setup terminal for key by key input
old_options = termios.tcgetattr(sys.stdin)
new_options = old_options[:]
new_options[3] &= ~(termios.ECHO | termios.ICANON)
termios.tcsetattr(sys.stdin, termios.TCSANOW, new_options)

try:
    #Status indication
    total_time_diff = timediff(log_start_time, log_end_time)

    input_thread = Thread(target=process_input)
    input_thread.daemon = True
    input_thread.start()

    while not parse.finished_parsing():
        current_diff = timediff(log_start_time, cur_time)
        percent = int(round(100.0 * current_diff / total_time_diff))
        write_progress(percent, cur_time)

        sleep(0.1)

except KeyboardInterrupt:
    interrupted = True
    # Unblock parsing thread
    running.set()

finally:
    # Reset terminal input options to originals no matter what
    termios.tcsetattr(sys.stdin, termios.TCSANOW, old_options)