もっとシンプルに書けないものだろうか。 とりあえず投げたら返してくれます。 telnet localhost 12345 とかやって接続すれば繋がります。 ターミナルを二つ起動して適当にメッセージを送ってみてくださいまし。 あとはHIGE(id:soundkitchen)がなんか作ってくれるの待つだけか。 select_echo_server.py # vim: fileencoding=utf8 sw=4 sts=4 import socket import select class BroadcastEchoServer(object): """ $ telnet localhost 12345 """ def __init__(self, port): self.port = port self.server_socket = socket.socket(socket.AF_INET
Python | 17:55今回はこちらのソースをお借りして、Pythonでソケット通信を用いたチャットっぽいプログラムを作ってみました。元のソースではクライアント側からしか発言できなかったので、サーバー側からもお互いに発言できるように書き換えました。その他細かい所もちょこちょこと修正。それでもチャットの相手のIPアドレスをいちいちソースに書かないといけなかったり一対一でしか会話できなかったり、一度発言したら相手からの発言を受信するまで何もできなかったりと、全然実用的ではないのですが。そのうちリアルタイムに会話できるチャットを作ってみたい。 とりあえずサーバー側のソースです。 #server.py import socket host = '127.0.0.1' port = 3794 serversock = socket.socket(socket.AF_INET, socket.SO
BaseHTTPServer モジュールは、HTTP サーバを構築するベースクラスを作るために SocketServer モジュールのクラスを使用します。 HTTPServer は直接的に使用できますが、 BaseHTTPRequestHandler は各プロトコルメソッド(GET, POST 等)を扱うように拡張するためにあります。 HTTP GET¶ リクエストハンドラクラスの HTTP メソッドをサポートするために、引数を取らない do_METHOD() メソッドを実装してください。 METHOD の部分は実際の HTTP メソッドの名前に置き換えます。例えば、 do_GET(), do_POST() 等になります。一貫性をもたせるためにこれらのメソッドは引数を受け取りません。全てのリクエストのパラメータは BaseHTTPRequestHandler へ渡されて、リクエストインスタ
2009/09/18 おおたに@アリエルネットワーク PythonとTwistedで始める 非同期プログラミング プログラミングはそれ自体が楽しい 自己紹介 ✤ アリエルネットワーク:http://www.ariel-networks.com/ ✤ あすなろblog:http://blog.pasonatech.co.jp/ootani/ ✤ 個人のblog:http://blog.liris.org/ ✤ Mac好き ✤ Python好き コンピュータは待ちが一杯 ほとんどが待ち状態 スレッドにより効率化 状態が変化したときだけ処理 Network Programing Style 同期型 非同期型 •ブロッキングIO •処理が完了するまで待つ •ノンブロッキングIO •イベント駆動 •APIをコールするとすぐに 処理が戻る。 •ChromeやWeaveは非同期 処理が高速化に寄与 同
17.1.1. subprocess モジュールを使う¶ このモジュールでは Popen と呼ばれるクラスを定義しています: class subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)¶ 各引数の説明は以下のとおりです: args は文字列か、あるいはプログラムへの引数のシーケンスです。実行するプログラムは通常 args シーケンスあるいは文字列の最初の要素ですが、 executable 引数を使うことにより明
Pythonのお勉強を兼ねて、先日 Cで書いた C言語でprefork型のデーモンを書く(3): デーモン化 - Sleepless geek in Seattle をPythonに移植してみた。 条件分岐、ループ、関数定義、ファイル操作、fork、wait、シグナルハンドラ、連想配列、などなど短いプログラムだけど、いろいろな要素が入っているのでなかなか良いサンプルになった。 #!/usr/bin/env python import os import sys import signal import time MAX_CHILDREN=16 PID_FILE='/var/run/my_prefork_daemon.pid' hash_children={} def main(): #デーモン化 daemonize() #プロセスIDを書いておく write_pid() #シグナルハンドラ
某プログラムをcronで呼び出していたのですが、これだと1分おきにしか実行できません。次のようにすれば、30秒単位で実行することもできますが、通常は1分単位で、ある時は10秒単位でというように状態によって間隔を変えて処理したかったのでデーモン化の方法を調べました。 * * * * * date & sleep 30 ; date Chris' Python Page にてそのものずばりの例を発見しました。指定したユーザで実行できるし、init.dスクリプトを書けば、OS起動時に自動実行することもできます。すばらしー 10秒おきにログ(/var/log/pydaemon.log)に時間を書き出すサンプル #!/usr/bin/env python #########################################################################
subprocess モジュールは新しくプロセスを生成して、そのプロセスを扱う一貫したインタフェースを提供します。それは従来からある他のモジュールよりも高レベルなインタフェースを提供します。そして os.system(), os.spawn*(), os.popen*(), popen2.*() や commands.*() のような従来の関数の置き換えを目的としています。 subprocess モジュールと他のモジュールとの比較を分かり易くするために os や popen を使用したサンプルを再作成して紹介します。 subprocess モジュールは Popen とそのクラスを使用する複数のラッパ関数を定義します。 Popen のコンストラクタは新たなプロセス生成を簡単にする複数の引数を受け取り、パイプを経由してその親プロセスと通信します。それは他のモジュールの置き換えられる全ての機能や
スコープ関係で悩んだのでメモメモ。 Pythonでは*1、関数内からグローバル変数を参照することができます。 参照 >>> a = 3 # グローバル変数 >>> def test1(): ... print a ... >>> test1() 3 関数内からグローバル変数を参照・表示していることがわかります。 代入 >>> a = 3 # グローバル変数 >>> def test2(): ... a = 10 ... print a ... >>> test2() 10 グローバル変数への代入ができましたできていません。 ※追記※ コメントで指摘を頂きましたが、この関数test2での変数aはローカル変数です。以下を見て頂くと分かりやすいかと。 >>> a = 3 # グローバル変数 >>> def test2(): ... a = 10 ... print a ... >>> test2
こんにちは。 最近いろいろごたついてて、ブログなんか更新してませんが、それなりに充実した生活を送っているのでご心配なくw ところで、今日はいつもどおり Python の話題です。 いま、某 LUG であるプログラムを作っているのですが、その中でマルチスレッドを使えたらなーと思って、ちょっといじってみました。 マルチスレッドが使えると...: 複数の作業を並列して実行できる 一定間隔で何かを実行するような処理を簡単にできて便利。 CPU を有効的に使える などいろいろ利点がありますが、今回は主に 2 番目のものをターゲットにしてみました。 結局、1番目も関わってくるんですけどね。 Python でスレッドを生成するには、threading モジュールを使うのが便利です。 http://www.python.jp/doc/release/lib/module-threading.html こい
ページコンテンツ threading – スレッドによる並列処理を管理する Thread オブジェクト カレントスレッドを決める デーモンと非デーモンスレッド 全てのスレッドを列挙する スレッドをサブクラス化する タイマースレッド スレッド間でシグナルを送る リソースへのアクセスを制御する 再入可能なロック コンテキストマネージャとしてのロック スレッドを同期する リソースへの同時アクセスを制限する スレッド固有のデータ ナビゲーション コンテンツテーブル 前: オプション OS サービス 次: mmap – メモリマップファイル This Page Show Source サンプルプログラム PyMOTW の全てのサンプルプログラムの出力は、 注記されていない限りは Python 2.7.2 で生成されています。 標準ライブラリの初期のバージョンでは利用できない機能も紹介している 可能性
15.1. os — 雑多なオペレーティングシステムインタフェース¶ このモジュールは、OS依存の機能をポータブルな方法で利用する方法を提供します。単純なファイルの読み書きについては、 open() を参照してください。パス操作については、 os.path モジュールを参照してください。コマンドラインに与えられた全てのファイルから行を読み込んでいくには、 fileinput モジュールを参照してください。一時ファイルや一時ディレクトリの作成については、 tempfile モジュールを参照してください。高レベルなファイルとディレクトリの操作については、 shutil モジュールを参照してください。 利用可能性に関する注意: Pythonの、全てのOS依存モジュールの設計方針は、可能な限り同一のインタフェースで同一の機能を利用できるようにする、というものです。例えば、 os.stat(path
「Pythonで外部プロセスを起動して出力と戻り値を処理する」で扱ったsubprocessモジュールによる外部プロセスの起動のコードをもとに、外部プロセスをバックグラウンドで実行してみるテストを行った。 ここで言うバックグラウンド実行とは、プログラム中で処理を並行して実行する「マルチスレッド」を利用して実行することを示す。 なぉ、下に書いている例はチュートリアルのサンプルコードを参考にしている。 (2014/11/9)ドキュメントのリンク先を修正し、サンプルコードの内容もPython 3で動作するように修正した。 threading.Threadオブジェクト threading.Threadを直接使用する場合 threading.Threadの子クラスを作成する場合 threading.ThreadオブジェクトPython上でマルチスレッド処理を行うのに便利なのが、threadingモジュ
1. 初めに この文書の目的は、 Python で自前の class を作るとき、メソッドの第一引数がそのクラスのインスタンスそれ自身 (一般に self と書かれる) であることの理由を説明することです。 他の言語ではメソッドを定義するときに第一引数をインスタンスにするという方法は取り入れておらず、 this などの予約語を使ってインスタンスを表すのが一般的です。 Python だけが、独自の流儀をとっています。 しかし、このことを説明したサイトは見当たりませんでした。 どのサイトもそれは決まりごとだで済ませてしまっています。 しかし、それではどうも Python のクラスシステムを理解した気になれないので、Python でクラスシステムが どのように実装しているか推測しながら、例の self について説明したいと思います。 2. オブジェクト指向プログラミングの復習 オブジェクトとは、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く