Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # vim: sw=4 ts=4 expandtab ai
- from gevent import pool, monkey
- monkey.patch_all()
- import sys
- import time
- import logging
- from random import randint
- from functools import wraps
- LOG = logging.getLogger(__name__)
- def log(func):
- @wraps(func)
- def wrapper(*args):
- LOG.info('started %s%s', func.__name__, args)
- ret = func(*args)
- LOG.info('finished %s%s', func.__name__, args)
- return ret
- return wrapper
- @log
- def subprocess(pid, sid):
- time.sleep(randint(1, 5))
- @log
- def process(pid):
- ppool = pool.Pool(3)
- for sid in range(10):
- ppool.spawn(subprocess, pid, sid)
- ppool.join()
- @log
- def main():
- ppool = pool.Pool(5)
- for pid in range(15):
- ppool.spawn(process, pid)
- ppool.join()
- return 0
- if __name__ == "__main__":
- logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s",
- datefmt="%M:%S")
- LOG.setLevel(logging.INFO)
- sys.exit(main())
Advertisement
Add Comment
Please, Sign In to add comment