How to draw RGBA 2D image in 3d_view with gpu module (or without)?
The 3D view does not know about this script, so it won't draw immediately since some change occurs for it.

But you can force updates in 3D views using this at the end of your script:

for area in bpy.context.window.screen.areas:
    if area.type == 'VIEW_3D':
        area.tag_redraw()