How do I make a large set of objects appear over a period of time?
Keyframes or Drivers on hide and hide_render

I would suggest either creating ether a keyframed action, or setting up drivers on the hide and hide_render properties of your object.

How you convert from your time to frames is up to you. In bpy.utils there is a convenience method that converts a datetime object to a frame.

Drivers 

Each object from data will be hidden (both in viewer and to render) until the scene frame is greater than the data frame. Test script below.

import bpy

context = bpy.context
scene = context.scene

data = [[0, 0, 1, 12],
        [0, 10, 3, 30],
        [3, 3, 4, 40],]


for line in data:
    x, y, scale, frame = line
    bpy.ops.mesh.primitive_uv_sphere_add(
            location=(x, y, 0))
    ob = context.active_object
    # set scale
    ob.scale *= scale
    # add drivers
    for dp in ["hide", "hide_render"]: # xxx
        driver = ob.driver_add(dp)
        driver.driver.expression = "frame &lt; %f" % frame


Keyframes

Keyframe as hidden at frame 1, show at data frame.

    # add keyframes
    for dp in ["hide", "hide_render"]: # xxx
        setattr(ob, dp, 1)
        ob.keyframe_insert(dp, frame=0)
        setattr(ob, dp, 0)
        ob.keyframe_insert(dp, frame=frame)