This is not expected behavior. Context processor are executed once each time a RequestContext is instantiated). In the case of template inheritance, the same context instance is passed up to the parent template, so that shouldn't cause another execution of the context processors. Either your logging is misleading (see @Vinay Sajip's comment), or you need to figure out where in your code an extra RequestContext might be executed on each request (are you using an inclusion tag or some other custom template tag that renders a template and instantiates RequestContext?)
EDIT Sorry, by "inclusion tag" I meant (in the generic sense) some tag that renders another template, not any tag that uses the inclusion_tag decorator. A regular inclusion_tag that takes context should simply pass along the existing context object, not instantiate a new RequestContext.
One thing you could try is to place an "import pdb; pdb.set_trace()" in your context processor, run the code in the Django dev server, and in the console examine the stack trace with pdb each time your context processor gets hit, to see where it's being called from.