ptask module

マルチプロセスを行うためのモジュールです。

author:鈴木宏和
class ptask.ProcessTask

Bases: multiprocessing.context.Process

プロセスを生成、管理するための抽象クラスです。継承して使います。 workメソッドとINTERVAL属性をオーバーライドすれば周期INTERVALでworkメソッドが何度も実行されます。 タスクを開始するにはstartメソッドを実行してください。また、タスクを停止するにはstopメソッドを実行してください。 set_pipeメソッドやset_queueメソッドによって得られるConnectionオブジェクトやQueueオブジェクトを介してメインプロセスと通信を行ってください。 なお、INTERVAL属性は、あくまで目安の周期であり、workメソッドの実際の実行周期はworkメソッドの実行時間に依存します。

このクラス自体がmultiprocessing.Processを継承しています。そのため、Processと名前が衝突がしないようにしてください。 また、multiprocessingの仕様で、一部マルチプロセスにできないオブジェクトがあります。 実行時にPickle関係の例外が発生する場合はどこかに使用できないオブジェクトが使われているということになります。 その場合はそのオブジェクトの使用を取りやめるほかに解決法がありません。

INTERVAL = 1

タスクを走らせる周期を表す属性です。単位はsecです。あくまで目安の周期なのであまりあてにはなりません。

__init__()

コンストラクタです。

recv()

Connectionオブジェクトから値を受信するメソッドです。 受信データはself.buf内に格納されます。

Return type:dict, bool
Returns:成功したら受信データを、失敗したらFalseを返します。
run()

startメソッド実行したときに走るメソッドです。 workメソッドを繰り返し実行します。

Returns:なし
send(data)

Connectionオブジェクトにデータを送信するメソッドです。

Parameters:data (dict) – 送信するデータです、
Returns:なし
set_pipe(duplex=True)

プロセス間通信のためのConnectionオブジェクトを生成するメソッドです。

Parameters:duplex (bool) – 双方向通信にするか否かを設定します。デフォルトはFalseです。双方向通信をしない場合は送信専用になります。
Return type:Connection
Returns:通信用Connectionオブジェクトです。duplexがFalseの場合、送信専用になります。
set_queue()

プロセス間通信のためのQueueオブジェクトを生成するメソッドです。

Return type:Queue
Returns:通信用Queueオブジェクトです。
stop()

プロセスを止めるメソッドです。メインプロセスからでも実行できます。

Returns:なし
classmethod work()

タスクの本体となるメソッドです。 抽象メソッドです。

Returns:なし