Я пытаюсь построить живой (и непрерывный) поток данных, который сбрасывается в csv из другой программы. Я получил сюжет, но потом понял, что мои данные были построены только до тех пор, пока я не выполнил код. Я считаю, что что-то не так с моей функцией синтаксического анализа (что-то новое в этом случае), но я не могу понять, что.Разбор фида данных в python
import threading
import csv
import dateutil.parser
import datetime
import time
import matplotlib
import matplotlib.pyplot as plt
from matplotlib import animation
log = "sample.csv"
data = ""
mytime = ""
thickness = ""
times = ""
#attempt at continuously reading my data source
def parser():
with open(log, 'r') as f:
global data
reader = csv.reader(f, delimiter=',')
data = reader.readlines()
time_thickness_data = []
while 1:
last_pos = f.tell()
next_line = f.readline()
if not next_line:
time.sleep(1)
f.seek(last_pos)
else:
mytime, thickness = splitter(next_line)
time_thickness_data.append([mytime, thickness])
def splitter(line):
mytime = line[0]
thickness = line[3]
return (mytime, thickness)
times = []
for date in mytime:
_ = dateutil.parser.parse(date)
times.append(datetime.datetime.strftime(_,'%H'))
def main():
a = threading.Thread(target=parser)
b = threading.Thread(target=splitter)
a.start()
b.start()
if __name__ == "__main__":
main()
#goes on to animated plot using times for x axis and thickness for y
fig = plt.figure()
axes = fig.add_subplot(111)
line, = axes.plot([], [], '.')
plt.show(block=False) #i had to use this to get my plot to show up
def init():
line.set_data([],[])
return line,
def animate(i):
a = 50 * i
xdata = times[:a]
ydata = thickness[:a]
line.set_data(xdata, ydata)
plt.draw()
axes.relim()
axes.autoscale_view(True,True,True)
return line,
anim = animation.FuncAnimation(fig, animate, init_func=init,
interval=1, blit=True)
plt.show()
Пример строка из CSV-файла выглядит следующим образом: 2015-07-25 14:54:50.786774,1,0,439.85,,,,0,0,
Можете ли вы установить некоторые данные? – dangonfast
Где находится график, который вы хотите постоянно обновлять? – db1234
Ну, я старался не делать это монстром, но я его отредактирую. – MBlankfield