ZMQ
""" # ############################## 生成器 ############################################## (i for i in [1,2,3,4]) # 惰性加载 a = range(10) # 生成器对象 def shorten(): string_list = list('abcdefg') for i in string_list: demo = yield i print(demo) if __name__ == '__main__': test = shorten() print(next(test)) test.send('123') # ############################## map ############################################## def func_map(x): return x + 1 if __name__ == '__main__': demo = [1, 2, 3, 4] obj = map(func_map, demo) # <map object at 0x7ff24539d908> print(demo) # [1, 2, 3, 4] print(obj) print(list(obj)) # [2, 3, 4, 5] 用列表解析实现map (func_map(x) for x in demo) # ############################## filter ############################################## def func_filter(x): print(x) return True if __name__ == '__main__': demo = [1, 2, 3, 4] obj = filter(func_filter, demo) print(obj) # <filter object at 0x7f2b0e19e908> print(list(obj)) # [1, 2, 3, 4] 用列表解析实现filter (x for x in demo if x >2) # ############################## sorted ############################################## sorted(iterable,key=None,reverse=False) # ############################## zip ############################################## keys = ['foobar', 'barzz', 'ba!'] print(list(map(len, keys))) # [6, 5, 3] print(zip(keys)) print(list(zip(keys))) # [('foobar',), ('barzz',), ('ba!',)] print(zip(keys, [6, 5, 3])) print(list(zip(keys, [6, 5, 3]))) # [('foobar', 6), ('barzz', 5), ('ba!', 3)] print(dict(zip(keys, [6, 5, 3]))) # {'foobar': 6, 'barzz': 5, 'ba!': 3} """ import multiprocessing import random import zmq def compute(): return sum([random.randint(1, 100) for i in range(1000000)]) # return '张三' def worker(): context = zmq.Context() work_receiver = context.socket(zmq.PULL) work_receiver.connect('tcp://0.0.0.0:5555') result_sender = context.socket(zmq.PUSH) result_sender.connect('tcp://0.0.0.0:5556') poller = zmq.Poller() poller.register(work_receiver, zmq.POLLIN) while True: socks = dict(poller.poll()) if socks.get(work_receiver) == zmq.POLLIN: obj = work_receiver.recv_pyobj() result_sender.send_pyobj(obj()) processes = [] for i in range(2): p = multiprocessing.Process(target=worker) p.start() processes.append(p) context = zmq.Context() worker_sender = context.socket(zmq.PUSH) worker_sender.bind('tcp://0.0.0.0:5555') result_receiver = context.socket(zmq.PULL) result_receiver.bind('tcp://0.0.0.0:5556') for x in range(2): worker_sender.send_pyobj(compute) results = [] for x in range(2): results.append(result_receiver.recv_pyobj()) for p in processes: p.terminate() print(results)