Process to process synchronization (unix)
Michael Stenner
mstenner at phy.duke.edu
Tue Mar 19 14:01:19 EST 2002
More information about the Python-list mailing list
Tue Mar 19 14:01:19 EST 2002
- Previous message (by thread): Process to process synchronization (unix)
- Next message (by thread): Process to process synchronization (unix)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, Mar 18, 2002 at 11:16:55AM +0000, Eric Brunel wrote: > Gillou wrote: > > I have a Zope application and another running process (in python too). > > I need to transmit data and signal (hey ! data available, do your job !) > > in an asynchronous way from the Zope app (in an external method) to the > > python running process (that runs for another user). > > The other process waits for the signal, takes given data, does the jobs > > and waits further signal (...) > > I'm 99.9% newbie in process to process communication. > > What packages are helpful for this ? > > The two means that come to my mind are: > - named pipes: quite easy to handle, as they are manipulated just like > files. The problems are that named pipes are quite difficult to synchronize > if both processes should send data to the other, and that's it's a > Unix-only solution. All functions manipulating named pipes are built-ins or > in module os. If you choose that, I may also provide a few simple examples. > - sockets: a bit trickier to handle, but far more practical for two-way > communications and multi-platform. The Python module to handle them is > simply socket. There's an example in the library reference (see > http://www.python.org/doc/current/lib/socket-example.html). It's always seemed to me that named pipes have limited usefulness. They seem like a bit of a hack that have two major selling points. 1) they are truly persistent in the sense that neither program has to "set them up" (although _someone_ does... just not for each instance of the program) and they continue to exist when both programs are gone. 2) it is REALLY easy to take a program that writes (or reads, but writes is easier) to a file, and make it write to a named pipe. The latter is the more persuasive. If you have someone else's program that writes to a file only, but you want to do something more "active" with the output, you can make the file a named pipe. Anyway, other than that, I don't see much going for named pipes. Sockets are nice because they don't require that you have extra crap in the filesystem, and they can easily be made network-aware. (Have the two processes run on two different machines). Bottom line... I would use sockets. -Michael -- Michael Stenner Office Phone: 919-660-2513 Duke University, Dept. of Physics mstenner at phy.duke.edu Box 90305, Durham N.C. 27708-0305
- Previous message (by thread): Process to process synchronization (unix)
- Next message (by thread): Process to process synchronization (unix)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list