python 后台运行

39 篇文章 0 订阅
35 篇文章 0 订阅

Python 后台运行

关于Python后台运行,查找了很多资料,配合Tornado后端库来实现。

首先聊一聊Linux中,关于后台和前台的问题。

当前状态下,执行了一条阻塞型命令(apt update或是yum update)时,我们无法再这条命令执行的基础上,再执行命令。当然&&是类似于消息队列,之前的命令完成(无论状态)之后再执行。

而后台便是一种类似并发,可以同时执行多条指令。这此之上,可以将重定向输出。

# -*- coding:utf-8 -*-


def run():
    print("run 1")
    import time
    for i in range(100):
    	time.sleep(1)
        print(i)
    
    
if __name__ == '__main__':
    run()

当我们有一个python文件(名字run.py

使用python3 run.py的时候,这个程序将会在终端中输出数字(1-100)的同时休息1秒。除非我们ctrl+c终止,或者ctrl+z移至后台。

但是对于后端程序而言,ctrl+z将会把程序放入后台,并且处于暂停状态。

  1. 第一种:后台不暂停挂起方式(安利)
    # 原命令
    >>> python3 run.py
    
    # 在执行程序时,添加命令
    >>> nohup python3 run.py > my.log &
    

    nohup不挂断运行命令

    &后台运行

    >将程序输出结果重定向输出到my.log日志中,若不指定日至文件,将使用默认nohup.out

    直接用./sh文件就可以运行

    但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令。


  2. 第二种:使用python-daemon方式
    pip3 install python-daemon
    

    写一个新的py文件(名字:run2)

    import daemon
    from run import run 
    
    with daemon.DaemonContext():
        run()
    

    然后python3 run2.py


  3. 第三种:ctrl+z+bg指令
    # ctrl+z将前台运行的程序放入后台挂起
    time@time:~$ python3 run.py 
    runing
    0
    1
    2
    ^Z
    [1]+  已停止               python3 run.py
    time@time:~$ 
    
    # 使用bg %jubnum 方式继续运行
    time@time:~$ bg 1
    [1]+ python3 run.py &
    time@time:~$ 3
    4
    5
    6
    7
    8
    9
    10
    ...
    

    如果这样做,那么输出结果将继续占用终端,ctrl+z将无法后台运行


    原因在于:bg指令本身是将后台暂停的程序继续运行,但并不是将程序本身从后台调至前台。所以占用终端的不是程序本身,而是输出结果。

    有一种很烦人的做法,让当前终端都处于一种ctrl+c都无法终止的情况

    # ctrl+z将前台运行的程序放入后台挂起
    time@time:~$ python3 run.py 
    runing
    0
    1
    2
    ^Z
    [1]+  已停止               python3 run.py
    du@du-GL553VD:~$ 
    

    依旧这样做,但在bg 1的时候,重定向输出结果……

    time@time:~$ bg 1 > my.log
    # 或 
    time@time:~$ bg 1 > my.log &
    

    除非关闭终端,让我们肉眼无法看到……???

    ***请不要在有实时输出的情况下用这种方式,不然连条命令写都写不了

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Python中实现后台运行,你可以使用nohup命令。nohup命令可以让你在终端关闭后,仍然能够保持程序的运行。以下是几个例子,展示了如何在不同情况下在后台运行Python程序: 1. 如果你使用Python 3,你可以使用以下命令将Python程序后台运行: ``` nohup python3 main.py > myout.file 2>&1 & ``` 这个命令会将Python程序main.py以Python 3解释器运行,并将输出重定向到myout.file文件中。 2. 如果你使用Python 2,你可以使用以下命令将Python程序后台运行: ``` nohup python -u manage.py runserver 0.0.0.0:8000 > log.log 2>&1 & ``` 这个命令会将Python程序manage.py以Python 2解释器运行,并将输出重定向到log.log文件中。 3. 在Linux下执行Python程序的后台运行命令是: ``` nohup python -u test.py > log.log 2>&1 & ``` 这个命令会将test.py程序以默认Python解释器运行,并将输出重定向到log.log文件中。 请注意,每个命令中的`&`符号表示将程序放入后台运行。通过这种方式,即使终端关闭,程序也会继续在后台运行。同时,`>`符号用于将输出重定向到指定文件,`2>&1`表示将标准错误输出重定向到标准输出中。 以上是几种常见的方法来在Python中实现后台运行,请根据你的具体情况选择适合的命令。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python进程后台启动](https://blog.csdn.net/qq_43058337/article/details/121486400)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值