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