Python Fabricでexecuteを使う

Python学習【365日チャレンジ!】248日目のマスターU(@Udemy11)です。

突然ですが、朝食はきちんと食べていますか?

朝食を取らないと頭の回転が悪くなるといわれたり、朝食を取らないと体が起きないと言われたり、ダイエットするなら朝食をとったほうが良いなんていわれたりして、「一体どっちがいいの?」なんて思う人もたくさんいるかと思いますが、そんな疑問に解決のヒントを与えてくれる記事を見つけました。

メンタリストDaiGoさんが客観的な実験結果を元に朝食だけでなく、食事全体のことにについても解説してくれているので、非常に納得がいくかと思います。

私達って、自分が成功した経験や感覚で物事を考えることがほとんどなので、現実の数値を元に説明してくれるとふとした疑問も解決へつなげることができます。

数値は嘘をつかないってことですね。

数値と一緒でプログラミングもルールが決められていて、そのとおり記述することで想定した動作をしてくれるので、記述ルールを見極めて組み合わせることで様々な処理をさせることができます。

様々な計算をしているという意味では、プログラミングも数値に関わるものなので、プログラミングは嘘をつかないと言えますね。

それでは今日もPython学習を始めましょう。

昨日の復習

昨日は、parallelの使い方を学習しました。

並列処理と同じような感じで処理が同時進行しましたが、並列処理が1つのPCで処理しているのに対して、parallelは、2つのサーバーを同時処理していました。

通常のコードであれば一つの命令が終了してから次の命令に移りますが、サーバー2つに同時に命令を出しているという感じでした。

詳細については、昨日の記事を参考にしてみてください。

今日は、実行結果を活用して処理を行うexecuteを学習します。

execute

executeは、実行する、成し遂げるという意味で、データベースの学習で登場していました。

そのexecuteを使って、抽出した値を活用できる辞書型データに置き換えてみます。

from fabric.api import run, env, execute

env.hosts = ['root@172.16.200.101:22', 'root@172.16.200.102:22']
env.passwords = {
    'root@172.16.200.101:22': 'root',
    'root@172.16.200.102:22': 'root',
}

def files():
    return run('ls -a')

def files_test():
    r = execute(files)
    print(r)

1行目でexecuteをインポートします。

9行目と10行目の関数でコマンドls -aを実行するのはこれまでと同じですが、returnで実行結果を返り値にしてしいます。

実行結果

Python Fabricでexecuteを使う

ちなみにfiles()returnをつけずにrun('ls -a')だけで実行すると、結果は別の値になるので、試してみてください。

まとめ

プログラミングは、値を取得することが目的じゃなく、取得した値をどのように活用できるかで利用の幅が広がります。

辞書型やリストに値を入れておくことでいかようにも料理できるので、今学習しているのは、ある意味材料集めの方法と言えるでしょう。

こだわりの料理を作っている料理人が自分で畑を耕して材料となる野菜を作ることと同じようなものですね。

といってもほとんどの食材は市場で購入しているわけなので、こちらは他のサーバーから必要なデータを取得するのに似ていますね。

いろいろなものを必要に応じて活用する能力は、プログラマーに必要な能力と言えるでしょう。

それでは明日もGood Python!