Пример #1
0
    p.start()
    for i in range(10):
        q.put(i)
    q.put(None)
    pid = os.getpid()
    for x in iter(port0.recv, None):
        print(pid, x)
    p.join()


def worker(*, q: multiprocessing.Queue, port: multiprocessing.Pipe):
    # TODO: use JoinableQueue
    while not q.empty():
        pid = os.getpid()
        x = q.get()
        if x is None:
            break
        print(pid, "<<", x)
        import time

        time.sleep(0.5)
        print(pid, ">>", x)
        port.send(f"<<{x}>>")

    # todo: finaize
    port.send(None)
    port.close()


as_subcommand.run()
Пример #2
0
from handofcats import Config, as_subcommand


@as_subcommand
def foo():
    pass


cfg = Config(ignore_logging=True)
if __name__ == "__main__":
    as_subcommand.run(config=cfg)
Пример #3
0
from handofcats import as_subcommand


@as_subcommand
def foo(target: str):
    import heavy_module

    print("foo")
    heavy_module.hello(target)


@as_subcommand
def bar(target: str):
    import heavy_module

    print("bar")
    heavy_module.hello(target)


if __name__ == "__main__":
    import sys
    import itertools

    sep = "-"
    itr = iter(sys.argv[1:])
    while True:
        argv = list(itertools.takewhile(lambda x: x != sep, itr))
        if len(argv) == 0:
            break
        as_subcommand.run(argv=argv)
Пример #4
0
from handofcats import as_subcommand as register


@register
def hello(*, name: str = "world"):
    print(f"hello {name}")


@register
def byebye(name):
    print(f"byebye {name}")


register.run()

def main(argv=None):
    import argparse

    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers(title='subcommands', dest='subcommand')
    subparsers.required = True

    fn = hello
    sub_parser = subparsers.add_parser(fn.__name__, help=fn.__doc__)
    sub_parser.add_argument('--name', required=False, default='world', help="(default: 'world')")
    sub_parser.set_defaults(subcommand=fn)

    fn = byebye
    sub_parser = subparsers.add_parser(fn.__name__, help=fn.__doc__)
    sub_parser.add_argument('name')
    sub_parser.set_defaults(subcommand=fn)