SSブログ

multiprocessingモジュールによる簡単分散処理 [Python]

Pythonの2.6以降から利用できるマルチプロセスモジュールを使ったサンプルを作ってみた。
参考にしたのはこちら

なんだか、簡単で拍子抜け。

現在会社で作ってるCOBOLソースの解析ツールの実行がシーケンシャル処理なので、これを使って複数のファイルを分散で解析させて、処理を早くさせようという魂胆。

これも見越して、COBOL解析処理もPythonで書きつつ、20日にCore i7のマシンが届くので、同時に8プロセス立てて実行できるかも。

いい時代になったもんですね~


以下、子プロセスを3つ立てて、それぞれにQueueを使ってメッセージをPUTするサンプル。
# -*- coding:utf-8 -*-

import os
import os.path
import time

from multiprocessing import Pool,Process,Queue

# 子プロセスとして実行される処理
def Child(q,sThreadName):
	while True:
		# キューからメッセージを取得
		msg = q.get()
		# 画面に出力
		print ("%s:%s" % (sThreadName,str(msg[0])))
		# メッセージが"quit"ならプロセス終了
		if msg[0] == "quit" :
			break
		# デバッグ用スリープ
		time.sleep(1)

if __name__ == "__main__":

	# 子プロセスとキューを管理する配列
	procs = []
	# 子プロセスとキューを作成し、管理配列に追加する
	for i in range(3) :
		n = "Process_%02d" % i
		q = Queue()
		p = Process(target=Child,args=(q,n))
		p.start()
		procs.append( (p,q,n) );

	# 子プロセス(3つ)に対してメッセージをPUTする
	for pinfo in procs :
		q = pinfo[1]
		for x in range(10) :
			q.put([x,]) 
		# 最後に終了メッセージをPUT
		q.put(["quit",])      

	# 子プロセスが終了するまで待機する
	print("waiting")
	for pinfo in procs :
		p = pinfo[0]
		p.join()

コメント(0) 

Python 3.0をMacOSXにインスコ [Python]

Python.orgには、まだMacOSX用のセットアップはないみたいなので、ソースからインストールする。

こちらを参考にした。

ただ、readline のパッチ12番目がうまくあたらなかったので調べたところ、カレントディレクトリを変更すれば良いとのこと。

cd support
patch < readline52_012

とすればパッチを当てられた。

インストール完了後、動作確認のためpythonとコマンドしてみても、以前の2.X系が起動する。はて?と調べたら、python3.0というコマンドになってたのね…w

Python 3.0 (r30:67503, Jan 12 2009, 08:18:27)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

素敵。

あれをやってみた。

>>> 値 = 1
>>> print( "%03d" % 値)
001
>>>

素敵。



コメント(0) 

Jythonプログラミング [Python]

ネットで見かけたので、近所の本屋で購入。


Jythonプログラミング

Jythonプログラミング

  • 作者: 西尾 泰和
  • 出版社/メーカー: 毎日コミュニケーションズ
  • 発売日: 2008/04/29
  • メディア: 単行本(ソフトカバー)



ざっと読んでみたところ、がんばって書いてるな〜という印象。
サンプルコードもたくさんあるし、良書だと思います。これでJythonファンが増えてくれる事を期待してます。
っていうかなんでみんな使わないのかな〜、便利なのに。

一番笑ったのは、表紙の from java.lang import * ですね。
Jython使いには、たまらないフレーズです。


MacOSX + Eclipse + PyDev [Python]


MacにEclipse 3.3.1 を導入。
ついでにPyDevも。

PyDevはUpdateマネージャから導入。

導入後、Pythonのパスを指定する設定が必要なんだけど、これを探すのに手間取った。

結局以下のパスを指定すれば良かった。

/System/Library/Frameworks/Python.framework/Versions/2.5/Resources/Python

調子にのって、Jythonも導入


MacOSX + MySQL + Pythonメモ [Python]

ひさびさにメモ

MacOSX + MySQL という環境で、Pythonからアクセスするには

1.SourceForgeにて、MySQL-Pythonをダウンロードする
 http://sourceforge.net/projects/mysql-python/

2.モジュールをダウンロード後に解凍

3.解凍ディレクトリにて、
 python setup.py build
 python setup.py install

4.あとはなぜかおまじない
 sudo mkdir /usr/local/mysql/lib/mysql/
 sudo ln -s /usr/local/mysql/lib/libmysqlclient_r.15.dylib /usr/local/mysql/lib/mysql/

5.動作確認
 Python1コマンドプロンプトで、モジュールインポートしてみて、エラーが出なければオK
 import MySQLdb

ご参考
 http://paison.hp.infoseek.co.jp/paison/database/r.html


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。