socketモジュールを使う # -*- coding: utf-8 -*- import socket def server(host, port): s = socket.socket() s.bind((host, port)) s.listen(1) conn, addr = s.accept() # クライアントの接続を待つ data = conn.recv(1024) # クライアントからのデータを受信する print "server: receive '%s'" % data conn.send(data.upper()) # クライアントにデータを送信する conn.close() s.close() def client(host, port): s = socket.socket() s.connect((host, port)) s.send("hello") # サ
前回のエントリで DaemonContextを使うと簡単にpythonスクリプトをデーモン化できるが、マルチプロセスなスクリプトでは上手く動かないと書きました。ところがソースコードを見てみると1行修正するだけで動作するようになったので残しておきます。 元々何が問題だったかというと、子プロセスの終了時にpidfileの削除が行われていた事です。これは本来親プロセスが死ぬ時に走るべき処理です。そこでpidfileの削除前に自身のpidをチェックして、親プロセスである時のみ処理を実行するようにしました。python-daemonパッケージのdaemon.pyを編集するのですが、元のファイルとの差分は以下になります。 --- daemon.py.orig 2009-11-22 18:54:56.000000000 +0900 +++ daemon.py 2009-11-23 07:15:31.00
「Pythonで外部プロセスを起動して出力と戻り値を処理する」で扱ったsubprocessモジュールによる外部プロセスの起動のコードをもとに、外部プロセスをバックグラウンドで実行してみるテストを行った。 ここで言うバックグラウンド実行とは、プログラム中で処理を並行して実行する「マルチスレッド」を利用して実行することを示す。 なぉ、下に書いている例はチュートリアルのサンプルコードを参考にしている。 (2014/11/9)ドキュメントのリンク先を修正し、サンプルコードの内容もPython 3で動作するように修正した。 threading.Threadオブジェクト threading.Threadを直接使用する場合 threading.Threadの子クラスを作成する場合 threading.ThreadオブジェクトPython上でマルチスレッド処理を行うのに便利なのが、threadingモジュ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く