def __init__(
      self, command, dependencies=[], targets=[], cpu=1, name='Anonymous_Task',
      stderr=None, stdout=None, error_check=not_zero, max_wall_time=float('inf')):
        ''' The __init__ for the Task object has nine parameters described below:
            command -
                a string representation of the cmd line command to be executed.
            dependencies -
                a list containing Task objects, Supervisor objects, or unit
                functions. A call to self.checkDependencies will return True
                if and only if all Task objects in dependencies are finished,
                all Supervisor objects in dependencies are finished, and all
                unit funcitons return True when called.
            targets -
                a list of strings that are the paths to the output files
                generated by running the task.
            cpu -
                the number of threads or cpu intensivity of the command. This
                value is used by Supervisor objects. Default=1
            name -
                A string that will be used for representing the task for more
                convienient logging
            stderr -
                String path to the location where stderr from the command
                should be written. Defaults is sys.stderr
            stdout -
                String path to the location where stdout from the command
                should be written. Defaults is sys.stdout
            error_check -
                a function that accepts a single int parameter, the exit code
                from running command. The function should return True if the
                exit code implies an error was encountered while running
                command, else False. Default = lambda i: i != 0
            max_wall_time -
                the amount of time, in minutes, that the command should be
                allowed to run before being stopped by a call to
                self.finished(). Default = float('inf')
        '''
        if(stderr is not None):
            f = open(stderr, 'a')
            f.close()
        if(stdout is not None):
            f = open(stdout, 'a')
            f.close()
        self.command = command
        self.dependencies = dependencies
        self.cpu = cpu
        self.name = name
        self.stdout = stdout
        self.stderr = stderr
        self.targets = targets
        self.error_check = error_check
        self.opened_files = []
        self.process = None
        self.exit_code = None
        self.soft_finished_status = False
        self.start_time = time.time()
        self.max_wall_time = max_wall_time