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

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

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

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ではPythonを使って機械学習の基礎を学ぶPythonオンライン講座を開催しています。

初心者向けの書籍を使って人工知能(AI)や機械学習について学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。