On 8/24/10 8:17 AM, Martin Sustrik wrote: > Abishek, > >> * I think the if the message processing logic takes lot of time, how >> can I thread the process of processing the message (in Python) > > AFAIK Python does not provide real threads, just green threads. So the > only option would be to run several python processes, connected to a > single central queue device (zmq_queue).
Python does provide real OS threads. However, the interpreter has a Global Interpreter Lock such that only one Python bytecode instruction runs at a time, usually. The GIL is released during I/O and some other long computations done inside C code that does not need to use the interpreter's data structures. Since 0MQ is running in its own thread and does not use the interpreter's data structures, it does not grab hold of the GIL. The network I/O and the processing already happen in separate threads. That's one of the nice things about using pyzmq for networking over other Python solutions: you can write your processing code very straightforwardly. You don't need to explicitly thread, either coorperatively or preemptively, in order interleave your processing with your networking. That said, if the OP needs multiple processing threads for some reason, multiple processes would be appropriate. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco _______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
