<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def walk_comic_archive(filename_full, image_format, optimize_after):
 """ Optimize a comic archive. This is done mostly inline to use the master processes process pool for workers. And to avoid calling back up into walk from a dedicated module or format processor. It does mean that we block on uncompress and on waiting for the contents subprocesses to compress. """

    # uncompress archive
    tmp_dir, report_stats = comic.comic_archive_uncompress(filename_full,
                                                           image_format)
    if tmp_dir is None and report_stats:
        return Settings.pool.apply_async(_comic_archive_skip,
                                         args=report_stats)

    # optimize contents of archive
    archive_mtime = os.stat(filename_full).st_mtime
    result_set = walk_dir(tmp_dir, optimize_after, True, archive_mtime)

    # wait for archive contents to optimize before recompressing
    nag_about_gifs = False
    for result in result_set:
        res = result.get()
        nag_about_gifs = nag_about_gifs or res.nag_about_gifs

    # recompress archive
    args = (filename_full, image_format, Settings, nag_about_gifs)
    return Settings.pool.apply_async(comic.comic_archive_compress,
                                     args=(args,))