def run_serial(target, jobs, n=<NUM_LIT:1>, **kwargs):
return [[target(copy.copy(job), i + <NUM_LIT:1>, j + <NUM_LIT:1>) for j in range(n)] for i, job in enumerate(jobs)]<EOL>
Evaluate the given function with each set of arguments, and return a list of results.
This function does in series.

Parameters
----------
target : function
    A function to be evaluated. The function must accepts three arguments,
    which are a list of arguments given as `jobs`, a job and task id (int).
jobs : list
    A list of arguments passed to the function.
n : int, optional
    A number of tasks. Repeat the evaluation `n` times for each job.
    1 for default.

Returns
-------
results : list
    A list of results. Each element is a list containing `n` results.

Examples
--------
>>> jobs = ((1, 'spam'), (2, 'ham'), (3, 'eggs'))

>>> target = lambda args, job_id, task_id: (args[1] * args[0])
>>> run_serial(target, jobs)
[['spam'], ['hamham'], ['eggseggseggs']]

>>> target = lambda args, job_id, task_id: "{:d} {}".format(task_id, args[1] * args[0])
>>> run_serial(target, jobs, n=2)
[['1 spam', '2 spam'], ['1 hamham', '2 hamham'], ['1 eggseggseggs', '2 eggseggseggs']]

>>> seeds = genseeds(3)
>>> def target(arg, job_id, task_id):
...     from ecell4.extra.ensemble import getseed
...     return getseed(arg, task_id)
>>> run_serial(target, (seeds, ), n=3)  # doctest: +SKIP
[[127152315, 2028054913, 253611282]]

See Also
--------
ecell4.extra.ensemble.run_serial
ecell4.extra.ensemble.run_sge
ecell4.extra.ensemble.run_slurm
ecell4.extra.ensemble.run_multiprocessing
ecell4.extra.ensemble.run_azure