Python多线程守护进程(模块守护进程和线程一起使用)



我用python-daemon包创建了一个python守护进程

我的应用程序工作得很好,但现在我想让它多线程。

应用程序是根据这个示例构建的。

我知道如何使用模块线程。

但是如何同时使用它们呢?

我需要在不同的线程中运行应用程序的方法run()。又名

def run(self):
    # run threads.
    while True:

所以只有主线程做所有守护进程的事情,比如锁文件等,其他线程只是并行地做一些额外的工作。

这可能吗?怎么做呢?

更新。也许多处理模块比线程更好?

您确定需要特定于python的守护程序包吗?有一些工具可以使任何循环程序变成守护程序(我想到了start-stop-daemon)

#!/bin/bash
### BEGIN INIT INFO
# Provides:          <whatever> 
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 6
# Short-Description: Start daemon at boot time
# Description:       <whatever> auto start.
### END INIT INFO
#set -x
set -e
if [ "$1" = "start" ]
    then
        start-stop-daemon --start --startas /usr/bin/python3 --pidfile /tmp/<whatever>.pid --make-pidfile --background --chdir '/var/local/<whatever>/' -- <whatever>.py
elif [ "$1" = "stop" ]
    then
        start-stop-daemon --stop --signal 2 --pidfile /tmp/<whatever>.pid
fi

如果你真的需要它,那么恐怕我不理解你的问题,你可以简单地开始一个线程,像这样

import threading
w = threading.Thread(target=run, args=(<args>, <args>, <args>))
w.setDaemon(True)
w.start()
#code

else如果你想以多进程的方式运行代码,你可以这样做

import multiprocessing
p = multiprocessing.Process(target=run, args=(<args>, <args>, <args>))
p.start()
p.join()
#code

最新更新