Pythonのプログラムをデーモン(常駐ソフト)化する方法を現役エンジニアが解説【初心者向け】

初心者向けにPythonのプログラムをデーモン(常駐ソフト)化する方法について解説しています。常駐ソフトとはプログラムに終了宣言がなくループし続けるようなプログラムのことを言います。その中でバックグラウンドで動作しているようなプログラムのことをデーモンと言ったりします。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

Pythonのプログラムをデーモン(常駐ソフト)化する方法について解説します。

そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプPython講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

プログラムをデーモン(常駐ソフト)化する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

デーモン(常駐ソフト)とは

常駐ソフトとは、コンピュータでメインメモリ上に常駐し特定の機能を提供するプログラムです。

特にUNIX系OSで、常駐ソフトをデーモン(daemon)と呼びます。デーモンは、利用者の操作とは無関係に処理を行うバックグラウンドプロセスの一種です。

別のプログラムや機器、通信相手など外部からの要求を受け付けて処理を実行したり、あらかじめ設定されたタイミングで特定の処理を実行したりします。

 

プログラムをデーモン(常駐ソフト)化する方法

プログラムをデーモン化するには、プロセスをバックグラウンド実行とする、シグナル受信時の処理方法を決める、標準入出力を切り離すといった操作が必要です。

Pythonではpython-daemonというモジュールを使うことで、既存のコードを簡単にデーモン化できます。

[PR] Pythonで挫折しない学習方法を動画で公開中

実際に書いてみよう

以下のコマンドでpython-daemonモジュールをインストールします。

pip install python-daemon

 

サンプルコード

import sys
import time
import daemon

def count_up():
    count = 0
    while True:
        print(count)
        count += 1
        time.sleep(1)

dc = daemon.DaemonContext(stdout=sys.stdout)

with dc:
    count_up()

 

実行結果

1秒ごとにコンソールに数字が出力されていきます。killコマンドでプロセスIDを指定し、プログラムを停止します。

解説

  1. 1秒ごとに変数をカウントアップし、出力する関数count_upを定義しました
  2. daemon.DaemonContextインスタンスを作成し、標準出力を指定しました
  3. withブロックの中でcount_up関数を呼び出すようにしました(この箇所がデーモン化されます)

監修してくれたメンター

橋本紘希

システムインテグレータ企業勤務のシステムエンジニア。

開発実績: Javaプログラムを用いた業務用Webアプリケーションや、基幹システム用バッチアプリケーションなどの設計構築試験。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間でPythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプPython講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。