2015-10-02 148 views
0

我有蟒蛇守护进程创造了蟒蛇守护packagePython的多线程守护进程(模块守护进程,并线程一起使用)

我的应用程序工作正常,但现在我想让它多线程。

该应用程序是从this example构建的。

我明白如何使用模块线程。

但是如何一起使用它们呢?

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

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

因此,只有主线程确实喜欢锁定文件等,以及其他线程的所有守护的东西只是做并行一些额外的工作。

这可能吗?以及如何做到这一点?

更新。也许multiprocessing模块比线程更好呢?

回答

0

你确定你需要一个特定于python的守护进程吗?一些工具的存在构成任何循环程序为守护程序(启动 - 停止守护想到)

#!/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 

其他线程,如果你想在多进程的方式运行代码,你可以像这样

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