2010-05-10 76 views
1

我试图找到一个很好的,简单的方法来从父 进程发信号子进程 (通过SocketServer与ForkingMixIn创建)。如何“发信号”感兴趣的子进程(没有信号)?

虽然可以使用Unix的信号,我想避开他们,因为只有 孩子谁是兴趣应接收信号,这将是 矫枉过正而复杂,要求某种登记 机制来识别父进程谁有兴趣。

(请不要建议线程,这个特定的程序将无法正常工作 与线程,因此必须使用叉子。)

回答

3

既然你是在unix系统上,信号量应该是简单的答案。 不幸的是,python似乎没有提供调用semop系统调用的方法。

如果您使用的是Python 2.6,则可以使用条件类 multiprocessing module

2

我想出了使用管道文件描述符的想法,父母可以选择写入然后读取/刷新,但这并不能作为非常优雅的设计。

的详细信息:母公司将创建一个管道,子进程将继承它的父进程将写入管,从而唤醒任何子select():荷兰国际集团的文件描述符,但然后会立即从管道的读取端读取并清空它 - 唯一的影响是管道上的那些子进程已被唤醒。

正如我所说,这感觉很奇怪和丑陋,但我还没有发现任何更好的东西。

编辑:

事实证明这行不通 - 一些子进程被唤醒,有些则不是。我使用了multiprocessing模块的Condition