SysV IPC message queues
Christian Dieterich
cdieterich at geosci.uchicago.edu
Thu Feb 3 12:43:07 EST 2005
On Déardaoin, Feabh 3, 2005, at 02:29 America/Chicago, Aki Niimura
wrote:
> Hello everyone.
>
> I'm trying to control a program from a Python program using IPC.
> Although using a socket is a common choice for such applications, I
> would like
> to use SysV message queues because I don't need to parse the stream.
>
> I thought Python had a support of SysV message queues (I have found
> almost
> anything I need in Python library modules so far).
> But Python library seems not supporting SysV message queues yet.
>
> I'm thinking of calling a C function from Python but it seems not so
> easy.
Although this might not be the most elegant way to do what you want,
it's relatively easy to make a C function work with Python. Have a look
at http://www.swig.org/
Swig writes a C/Python wrapper for your C code which can be compiled
into a shared object library. Then you can import that in Python. Swig
is also (rudimentary) supported by distutils, so you don't even need to
deal with the generation of the library.
Christian
Example:
> cat src/SomeModule.i
%module SomeModuleLib
%{
#include "SomeModule.h"
%}
%include src/SomeModule.c
> swig -python src/SomeModule.i
> gcc -I/sw/include/python2.3 -c src/SomeModule.c -o SomeModule.o
> gcc -I/sw/include/python2.3 -c src/SomeModule_wrap.c -o
SomeModule_wrap.o
> gcc -L/sw/lib -bundle -flat_namespace -undefined suppress
SomeModule.o SomeModule_wrap.o -o _SomeModuleLib.so
or automatic build from setup.py
from distutils.core import setup, Extension
import os, glob
srcfiles = glob.glob(os.path.join('src', '*.[ci]'))
setup(name="SomePackage",
package_dir={"SomePackage": "lib"},
packages=["SomePackage"],
ext_modules=[Extension("SomePackage._SomeModuleLib",
srcfiles,),],)
>>> import SomeModuleLib
More information about the Python-list
mailing list