try:
from io import StringIO
except ImportError:
from cStringIO import StringIO
import threading
import queue
class Job(object):
def __init__(self, priority, description):
self.priority = priority
self.description = description
print(priority)
def __lt__(self, other):
return self.priority < other.priority
def __ge__(self, other):
return self.priority >= other.priority
q = queue.PriorityQueue()
q.put(Job(3, "m"))
q.put(Job(10, "l"))
q.put(Job(1, "I"))
def process_job(q):
while True:
next_job = q.get()
print(next_job.description)
workers = [threading.Thread(target=process_job, args=(q,)),
threading.Thread(target=process_job, args=(q,))]
for worker in workers:
worker.setDaemon(True)
worker.start()
q.join()
import functools
import inspect
from pprint import pprint
@functools.total_ordering
class MyObject(object):
def __init__(self, val):
self.val = val
def __eq__(self, other):
return self.val == other.val
def __gt__(self, other):
return self.val > other.val
print('Methods')
pprint(inspect.getmembers(MyObject, inspect.ismethod))
a = MyObject(1)
b = MyObject(2)
print('Comparisons')
for expr in ['a < b', 'a <= b', 'a == b', 'a >= b', 'a > b']:
print(expr)
result = eval(expr)
print(expr, result)