<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def do_watch(self, *args):
 """ Watch Dynamo tables consumed capacity """

        tables = []
        if not self.engine.cached_descriptions:
            self.engine.describe_all()
        all_tables = list(self.engine.cached_descriptions)
        for arg in args:
            candidates = set((t for t in all_tables if fnmatch(t, arg)))
            for t in sorted(candidates):
                if t not in tables:
                    tables.append(t)

        mon = Monitor(self.engine, tables)
        mon.start()