Guest User

Untitled

a guest
Feb 14th, 2011
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.03 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # vim: sw=4 ts=4 expandtab ai
  4.  
  5. from gevent import pool, monkey
  6. monkey.patch_all()
  7.  
  8. import sys
  9. import time
  10. import logging
  11.  
  12. from random import randint
  13. from functools import wraps
  14.  
  15. LOG = logging.getLogger(__name__)
  16.  
  17. def log(func):
  18.     @wraps(func)
  19.     def wrapper(*args):
  20.         LOG.info('started %s%s', func.__name__, args)
  21.         ret = func(*args)
  22.         LOG.info('finished %s%s', func.__name__, args)
  23.         return ret
  24.     return wrapper
  25.  
  26. @log
  27. def subprocess(pid, sid):
  28.     time.sleep(randint(1, 5))
  29.  
  30. @log
  31. def process(pid):
  32.     ppool = pool.Pool(3)
  33.     for sid in range(10):
  34.         ppool.spawn(subprocess, pid, sid)
  35.     ppool.join()
  36.  
  37. @log
  38. def main():
  39.     ppool = pool.Pool(5)
  40.     for pid in range(15):
  41.         ppool.spawn(process, pid)
  42.     ppool.join()
  43.     return 0
  44.  
  45. if __name__ == "__main__":
  46.     logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s",
  47.                         datefmt="%M:%S")
  48.     LOG.setLevel(logging.INFO)
  49.     sys.exit(main())
Advertisement
Add Comment
Please, Sign In to add comment