'Create a new job from a string which can be fed to eval().
global/locals dicts can be provided, which will be passed to the eval
call.'

def __init__(self, expression, glob=None, loc=None):

    self.code = compile(expression, '<BackgroundJob    compilation>', 'eval')
    glob = ({} if (glob is None) else glob)
    loc = ({} if (loc is None) else loc)
    self.expression = self.strform = expression
    self.glob = glob
    self.loc = loc
    self._init()
