Traceback (most recent call last): File "C:\Python27\lib\multiprocessing\queues.py", line 262, in _feed send(obj) PicklingError: Can't pickle <type 'generator'>: attribute lookup __builtin__.gen erator failed
#python pusher.py tcp://*:8080 import sys import time import zmq from multiprocessing import Queue import threading import json from json import dumps, loads, JSONEncoder, JSONDecoder import pickle from pycallgraph import PyCallGraph from pycallgraph.output import GraphvizOutput class PythonObjectEncoder(JSONEncoder): def default(self, obj): if isinstance(obj, (list, dict, str, unicode, int, float, bool, type(None))): return JSONEncoder.default(self, obj) return {'_python_object': pickle.dumps(obj)} def as_python_object(dct): if '_python_object' in dct: return pickle.loads(str(dct['_python_object'])) return dct context = zmq.Context() sock = context.socket(zmq.PUSH) sock.bind(sys.argv[1]) def getcombinations(): for ii in range(1,2000): for jj in range(1,2000): for kk in range(1,2000): yield [ii,jj,kk] class StreamArray(list): def __iter__(self): return getcombinations() # according to the comment below def __len__(self): return 1 def worker(): while True: if q.qsize() < 1000: q.put(getcombinations()) q = Queue(maxsize=1000) t = threading.Thread(target=worker, args = ()) t.daemon = True t.start() while True: time.sleep(1) #sock.send(sys.argv[1] + ':' + time.ctime()) combobject = getcombinations() #sock.send(json.dumps(combobject, cls=PythonObjectEncoder)) if q.qsize() > 0: item = q.get() sock.send(json.dumps(item)) #sock.send(json.dumps(combobject, cls=PythonObjectEncoder)) -- https://mail.python.org/mailman/listinfo/python-list