因此,我正在运行AirSim,并且我有一个收集数据并将其写入文件的应用程序接口。我希望将写入速度的频率限制为60 Hz (或每秒写入60次)。我该怎么做呢。目前,我只在while循环中有write命令。
而True:
gps_data = client.getGpsData().gnss.geo_point
alt = (gps_data.altitude)
lat = (gps_data.latitude)
lon = (gps_data.longitude)
gps_data_struct = [lat,lon,alt]
with open(output_file,'a') as gpscsvfile:
gpscsvwriter = csv.writer(gpscsvfile)
gpscsvwriter = gpscsvwriter.writerow(gps_data_struct)
#print("Altitude: %s\nLatitude %s\nLongitude %s" %(alt,lat,lon) )
if False:
break发布于 2021-02-03 11:41:35
好的,所以这假设while True中的所有代码运行时间不到1秒,对吗?如果代码最终花费的时间超过1秒,那么下面的代码将在最后一次运行后每“整秒”运行一次代码。即,如果第一次运行从0开始,耗时1.1秒,那么第二次运行将从2开始。
import time
starttime = time.time()
while True:
gps_data = client.getGpsData().gnss.geo_point
alt = gps_data.altitude
lat = gps_data.latitude
lon = gps_data.longitude
gps_data_struct = [lat, lon, alt]
with open(output_file,'a') as gpscsvfile:
gpscsvwriter = csv.writer(gpscsvfile)
gpscsvwriter = gpscsvwriter.writerow(gps_data_struct)
time.sleep(1 - ((time.time() - starttime) % 1))如果你需要更健壮的东西,你可以看看APScheduler
https://stackoverflow.com/questions/66020822
复制相似问题