ori = eval(request.form['orientationAngles'])
history[0] = ori + [eval(request.form['time']), ]
with open('../../shared_memory/predicted.txt', 'rb+') as f:
with mmap.mmap(f.fileno(), 48, access=mmap.ACCESS_WRITE) as mm:
mm[:] = struct.pack('fffqfffq',
-np.rad2deg(history[0][1]),
-np.rad2deg(history[29][1]),
)
mm.flush()
eval()
用于执行一个字符串表达式,并返回表达式的计算结果;即变量赋值时,等号右边的表示是写成字符串的格式,返回值就是这个表达式的结果。
with open(… ‘rb+’) as f
用’rb’模式表示打开二进制文件,用’rb+'模式表示对二进制文件进行读写。
他会在使用完毕后,自动关闭文件,相对open()省去了写close()的麻烦。
with mmap.mmap(f.fileno(), 48, access=mmap.ACCESS_WRITE) as mm:
使用mmap()函数可以创建一个内存映射文件。该函数的第1个参数是一个文件描述符,可以通过file对象的fileno()函数获取;第2个参数是要映射的文件部分大小(单位字节),如果该值为0,映射整个文件,如果该参数大于文件大小,则扩展该文件。
mm[:]
则是写文件的过程
struct.pack
struct.pack用于将Python的值根据格式符,转换为字符串。
'ff’是格式字符串,后面的每个参数必须与格式字符串描述一致。
-np.rad2deg(history[0][1]),-np.rad2deg(history[29][1])表示要转换的python值。
f: float
q: long long
np.rad2deg
将角度从弧度转换为度。
flush
flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。