Blender 2.79 Numeric Loading Cursor (like the timer or beachball, only with numbers)
In short
You are reading: «33.33 percent, 66.66 percent, done», or more literally «3333 per ten thousand (‱), etc». These percentages don't necessarily correspond to a &quot;fraction of the evaluation time&quot;, but more likely to a &quot;fraction of the total number of steps&quot;, in this case: 3.
In detail
The cursor displays the current progress, mapped to the range 0 to 9999.
It is called, for instance, in $SOURCE/blender/makesrna/intern/rna_wm_api.c like this:
static void rna_progress_update(struct wmWindowManager *wm, float value)
{
  if (wm_progress_state.is_valid) {
    /* Map to cursor_time range [0,9999] */
    wmWindow *win = wm-&gt;winactive;
    if (win) {
              int val = (int)(10000 * (value - wm_progress_state.min) / (wm_progress_state.max - wm_progress_state.min));
              WM_cursor_time(win, val);
    }
  }
}

where a given &quot;value&quot; is compared to a &quot;min&quot; and a &quot;max&quot; and expressed as &quot;val&quot; in terms of a fraction of 10,000 of the (min, max) interval. The function WM_cursor_time from $SOURCE/blender/windowmanager/intern/wm_cursors.c takes care of &quot;visualising&quot; the cursor.
Of course script creators can pass to the cursor number mapped to 1-100, or 1-1000 if they want: &quot;WM_cursor_time&quot; doesn't check that the number is a fraction of 10000. So it really depends on context here!
In your case, probably the process of loading an OBJ has three checkpoints, that were hard-assigned to 1/3, 2/3 and 3/3 and don't necessarily correspond linearly to their evaluation time. These fractions, mapped to 10000, with the decimal part ignored (&quot;floor&quot; rounding) are 3333, 6666 and 10000.
I speculate that what you are seeing are just the first two of these numbers while &quot;10000&quot; (999) is skipped because it's probably overridden by the next event.