Python循环减速

时间:2015-03-30 00:17:03

标签: python arduino

所以我试图通过串口从arduino板读取数据。目前,我将它保存为最终图形的数据,希望接近实时。到目前为止,当我尝试读取超过150次时,我的执行速度变慢了。我不完全确定为什么。它似乎并不缺乏记忆,因为它几乎不使用任何记忆。串行连接几乎是即时的。 Python不是我最常用的语言,所以如果它是愚蠢的话我会道歉。

我的python代码如下。

import serial
import matplotlib as plt
import time
from time import sleep as zzz
import csv

ser = serial.Serial(2, 9600)

startTime = time.clock()
line = ser.readline()
dataInital = [float(val) for val in line.split()][0]

timeList = []*12000
dataList = []*12000
timeList.append(startTime)
dataList.append(dataInital)

with open('data.csv', 'w', newline='') as csvFile:

    testFile = csv.writer(csvFile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
    #testFile.writerow([dataInital, "%f" % (startTime)])

    userInput = input("enter q to quit, r to read: ")

    while userInput != 'q':
        n = 1
        if userInput == 'r':
            n = int(input("How many seconds do you want to read? "))
        for i in range(1, n):
            ser.write(b'1')
            line = ser.readline()
            timeList.append(time.clock())
            data = [float(val) for val in line.split()][0]
            dataList.append(data)
            print(data)
            zzz(1)
    userInput = input("enter q to quit, r to read: ")

    finalTime = time.clock()
    timeList.append(finalTime)
    testFile.writerows(zip(dataList, timeList))
    testFile.writerow(["No data",timeList[-1]])
    print("%f:%f" % (startTime, finalTime))

0 个答案:

没有答案