Advertisement
Guest User

new

a guest
Mar 22nd, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.22 KB | None | 0 0
  1. import time
  2. import socket
  3. from math import sqrt
  4.  
  5.  
  6. def is_prime(num):
  7.     if num < 2:
  8.         return True
  9.     for i in range(2, int(sqrt(num)) + 1):
  10.         #time.sleep(0.2)
  11.         if not num % i:
  12.             return False
  13.     return True
  14.    
  15.  
  16. def co_is_prime(num):
  17.     if num < 2:
  18.         return True
  19.     for i in range(2, int(sqrt(num)) + 1):
  20.         # yield from co_sleep(0.2)
  21.         if not num % i:
  22.             return False
  23.         yield
  24.     return True
  25.    
  26.  
  27. def all_matches(iterable, predicate):
  28.     for item in iterable:
  29.         if predicate(item):
  30.             print(item)
  31.             break
  32.         yield
  33.        
  34.        
  35. def co_all_matches(iterable, predicate):
  36.     for item in iterable:
  37.         if (yield from predicate(item)):
  38.             print(item)
  39.             break
  40.         yield
  41.  
  42.  
  43. def co_sleep(delay):
  44.     start = time.time()
  45.     expire = start + delay
  46.     while True:
  47.         now = time.time()
  48.         if now >= expire:
  49.             break
  50.         yield
  51.        
  52.  
  53.  
  54. poll= []
  55. intervals = (
  56.   (104, 200),
  57.   (145, 200),
  58.   (206, 260),
  59.   (1204, 2000)
  60. )
  61.  
  62. for interval in intervals:
  63.     beg, end = interval
  64.     gen = co_all_matches(range(beg, end), co_is_prime)
  65.     poll.append(gen)
  66.    
  67.  
  68. start = time.time()
  69. while True:
  70.   try:
  71.       for gen in poll:
  72.           try:
  73.             next(gen)
  74.           except StopIteration as err:
  75.               poll.remove(gen)
  76.               if not poll:
  77.                   raise err
  78.   except StopIteration:
  79.     break
  80.        
  81.  
  82. end = time.time()
  83. print('Total time: %0.2f' % (end - start))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement