概要
- Unix系のプロセス間通信などで使用するposixメッセージキューをpythonで扱う
- posix_ipcモジュールを使ってプロセス間通信を行う
手順
- pipでposix_ipcをインストールします
$ sudo pip install posix_ipc
- posix_ipcモジュールのMessageQueueクラスを使うことでposixキューの各操作ができます
実装
- 送信側
#!/usr/local/env python
# -*- coding: utf-8 -*-
import json
import posix_ipc
import time
if __name__ == "__main__":
posix_ipc.unlink_message_queue("/queue_name")
mq = posix_ipc.MessageQueue("/queue_name", posix_ipc.O_CREX)
counter = 0
while True:
counter += 1
# sendでエンキュー, str, unicodeを送信
mq.send(json.dumps({"loop_count": counter}))
print "queue: %d" % counter
time.sleep(1.0)
posix_ipc.unlink_message_queue("/queue_name")
- 受信側
#!/usr/local/env python
# -*- coding: utf-8 -*-
import json
import posix_ipc
import time
if __name__ == "__main__":
mq = posix_ipc.MessageQueue("/queue_name")
while True:
msg = mq.receive()
print json.loads(msg[0])
time.sleep(0.5)
- キューの名前は/から始める必要があり、複数の/を含めることはできない(階層構造にはできない
- メッセージキューの最大メッセージ数はデフォルトでは10