V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
baocaixiong
V2EX  ›  Python

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

  •  
  •   baocaixiong · Dec 11, 2013 · 4261 views
    This topic created in 4525 days ago, the information mentioned may be changed or developed.
    想尝试着弄个守护进程,首先要简单的代码测试测试,代码如下:
    <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掉两个进程的时候,只有一个子进程能够重新创建。求解决办法。谢谢。
    10 replies    1970-01-01 08:00:00 +08:00
    loveshouhu
        1
    loveshouhu  
       Dec 11, 2013   ❤️ 1
    代码贴到gist 然后把url发过来就会默认用gist的排版。
    baocaixiong
        3
    baocaixiong  
    OP
       Dec 11, 2013
    @loveshouhu 感谢。
    kier
        5
    kier  
       Dec 11, 2013
    这。。,在遍历processess的时候,改变processes的值,确定不会出错?
    baocaixiong
        6
    baocaixiong  
    OP
       Dec 11, 2013
    yueyoum
        7
    yueyoum  
       Dec 11, 2013
    ues this:
    https://github.com/yueyoum/daemonize

    pip install daemonzied
    tanywei
        8
    tanywei  
       Dec 12, 2013
    supervisor?
    baocaixiong
        9
    baocaixiong  
    OP
       Dec 12, 2013
    @tanywei
    @yueyoum
    @kier
    @sarowlwp
    @loveshouhu

    其实我是想问,为什么同时kill掉两个子进程的时候,只会重启一个。这样写的有什么bug,这是学习的过程,并不是要使用的。呵呵。谢谢大家了。
    kier
        10
    kier  
       Dec 12, 2013
    @baocaixiong kill的话,应该是signal 15,这个是不稳定信号,当一个信号在进程中注销到执行信号处理函数之间如果再有同样的信号发生,kernel就会忽略这个信号, 认为只有一个信号发生
    有可能是这个原因,需要你继续去证实!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2444 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 07:48 · PVG 15:48 · LAX 00:48 · JFK 03:48
    ♥ Do have faith in what you're doing.