python守护进程的问题(代码肿么美化?)

2013-12-11 17:42:04 +08:00
 baocaixiong
想尝试着弄个守护进程,首先要简单的代码测试测试,代码如下:
<code>
# coding: utf8

from multiprocessing import Process
import os
import time
import setproctitle


setproctitle.setproctitle('subprocess')
def targ(x):
setproctitle.setproctitle('subprocess_' + str(x))
print '这是一个进程任务' + str(os.getpid())
while 1:
time.sleep(0.5)

processes = {}

def createProc(x):
process = Process(target=targ, args=(x,))
process.start()

processes[process.pid] = x

for x in range(2):
createProc(x)


for pid, x in processes.iteritems():

pid, status = os.wait()

del processes[pid]

createProc(x)
</code>
很明显,这个程序很容易就能跑起来,然后也产生了两个进程。并且kill掉其中一个进程的时候,进程也会重新被创建。
问题来了:
当我同时kill掉两个进程的时候,只有一个子进程能够重新创建。求解决办法。谢谢。
3801 次点击
所在节点    Python
10 条回复
loveshouhu
2013-12-11 17:48:03 +08:00
代码贴到gist 然后把url发过来就会默认用gist的排版。
baocaixiong
2013-12-11 17:51:38 +08:00
baocaixiong
2013-12-11 17:52:47 +08:00
@loveshouhu 感谢。
sarowlwp
2013-12-11 18:02:44 +08:00
kier
2013-12-11 18:05:56 +08:00
这。。,在遍历processess的时候,改变processes的值,确定不会出错?
baocaixiong
2013-12-11 18:30:07 +08:00
yueyoum
2013-12-11 18:40:05 +08:00
ues this:
https://github.com/yueyoum/daemonize

pip install daemonzied
tanywei
2013-12-12 16:05:33 +08:00
supervisor?
baocaixiong
2013-12-12 16:24:29 +08:00
@tanywei
@yueyoum
@kier
@sarowlwp
@loveshouhu

其实我是想问,为什么同时kill掉两个子进程的时候,只会重启一个。这样写的有什么bug,这是学习的过程,并不是要使用的。呵呵。谢谢大家了。
kier
2013-12-12 17:13:41 +08:00
@baocaixiong kill的话,应该是signal 15,这个是不稳定信号,当一个信号在进程中注销到执行信号处理函数之间如果再有同样的信号发生,kernel就会忽略这个信号, 认为只有一个信号发生
有可能是这个原因,需要你继续去证实!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/92737

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX