I am trying to use blender to animate spheres I am controlling with a python script. I already have the position data I want for each sphere at each frame of the animation. I don't need keyframes with their interpolation curves and all that overhead. Is there any way to just update the position of objects at each frame without a keyframe and fcurve between every frame?
fcurves are how blender stores animation data. That is what it is for and you should just use it. If you are defining the animated values every frame then the interpolation will be of no concern. If your values only change on some frames then set the interpolation to be constant.
For creating the animation by script that would be
obj.location.x = 12.23 obj.keyframe_insert('location', index=0, frame=1)
If you really want to manually animate something without animation data, you should be able to use handlers to run a function every frame.
def myframe_change(scene): if scene.frame_current == 1: scene.objects['Cube'].location.x = 12.23 bpy.app.handlers.frame_change_pre.append(myframe_change)
If you are concerned about overhead, I think you will find running a python script every frame will add more overhead than using native animation data.