我用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