精华内容
下载资源
问答
  • python中如果做到一段程序在同时运行两个代码块 例如:一个小游戏在运行另一段代码在 计时,时间一到游戏代码就会终止。这样的情况如何实现
  • python中多线程如何用Ctrl+C终止

    万次阅读 2016-04-01 21:38:20
    在编写python多线程程序时,发现用Ctrl+C无法终止,就算用Ctrl+Z强制当前进程转为后台并使之停止,而实际上并未停止,用ps命令一查还在运行,于是上网上找资料,动手实践,记录分享一下解决办法。 在你的代码增加...

    在编写python多线程程序时,发现用Ctrl+C无法终止,就算用Ctrl+Z强制当前进程转为后台并使之停止,而实际上并未停止,用ps命令一查还在运行,于是上网上找资料,动手实践,记录分享一下解决办法。原理是:用另外一个进程来接受信号后杀掉执行任务进程。

    在你的代码中增加如下类

    class Watcher():
    
        def __init__(self):
            self.child = os.fork()
            if self.child == 0:
                return
            else:
                self.watch()
    
        def watch(self):
            try:
                os.wait()
            except KeyboardInterrupt:
                self.kill()
            sys.exit()
    
        def kill(self):
            try:
                os.kill(self.child, signal.SIGKILL)
            except OSError:
                pass
    

    然后在你的线程启动之前,实例化一个Watcher对象

    def main():
        init()
        Watcher()
        start_your_thread1()
        start_your_thread2()
        start_your_thread3()
    之后你就能发现能用Ctrl+C结束你的多线程程序了,而且是彻底结束。

    展开全文
  • 异常即是一个事件,该事件会在...在Java中使用try-catch来捕获异常,而在Python中类似,使用try-except来捕获发生的异常事件。基本结构如下: try: <语句> #运行别的代码 except <名字>: <语句>

    异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

    在Java中使用try-catch来捕获异常,而在Python中类似,使用try-except来捕获发生的异常事件。基本结构如下:

    try:
    <语句>        #运行别的代码
    except <名字>:
    <语句>        #如果在try部份引发了'name'异常
    except <名字>,<数据>:
    <语句>        #如果引发了'name'异常,获得附加的数据

    对于异常的种类,Python定义了很多标准异常,也可以自定义异常类。常见标准异常如下(详细见参考资料1):

    异常名称 描述
    Exception 常规错误的基类
    IOError  输入/输出操作失败
    ImportError  导入模块/对象失败
    OverflowError 数值运算超出最大限制
    ZeroDivisionError 除(或取模)零 (所有数据类型)

     

    下面来看一个例子:

    try:
        i = int('a')
    except Exception, e:
        print 'str(Exception):\t', str(Exception)
        print 'str(e):\t\t', str(e)
        print 'repr(e):\t', repr(e)
        print 'e.message:\t', e.message
        print 'traceback.print_exc():'; traceback.print_exc()
        print 'traceback.format_exc():\n%s' % traceback.format_exc()
    

    str(e)返回字符串类型,只给出异常信息,不包括异常信息的类型,如1/0的异常信息。

    repr(e)给出较全的异常信息,包括异常信息的类型,如1/0的异常信息。

    e.message获得的信息同str(e)。

    采用traceback模块,需要导入traceback模块(import traceback),此时获取的信息最全,与python命令行运行程序出现错误信息一致。使用traceback.print_exc()打印异常信息到标准错误,就像没有获取一样,或者使用traceback.format_exc()将同样的输出获取为字符串。你可以向这些函数传递各种各样的参数来限制输出,或者重新打印到像文件类型的对象。

    这里需要注意的是:在 Python 3 Exception 的 except 子句中,不支持使用逗号 ',' 分隔 Exception 和 e,所以需要采用 as 关键词进行替换。另外,与 Python 2 Exception 类相比,Python 3 Exception 类没有 message 成员变量。针对这个问题,可以采用 sys.exc_info() 方法获取得到相关的异常信息。as 关键字以及 sys.exc_info() 方法对于 Python 2 同样适用。下面是Python3的写法:

    except Exception as e:
        print('str(Exception):\t', str(Exception))
        print('str(e):\t\t', str(e))
        print('repr(e):\t', repr(e))
        # Get information about the exception that is currently being handled  
        exc_type, exc_value, exc_traceback = sys.exc_info() 
        print('e.message:\t', exc_value)
        print("Note, object e and exc of Class %s is %s the same." % 
                  (type(exc_value), ('not', '')[exc_value is e]))
        print('traceback.print_exc(): ', traceback.print_exc())
        print('traceback.format_exc():\n%s' % traceback.format_exc())

    程序中的变量 e 和 exc_value 是同一个异常类型实例对象。exc_info() 方法可以获取正在处理的异常信息,即 except 子句正在处理的异常,其返回值为一个tuple类型的三元组(exc_type, exc_value, exc_traceback),其中,exc_type为获取到的异常类型;exc_value为该异常类型对象;exc_traceback为一个 traceback 对象,包含异常最初发生的调用栈信息。

     

    参考资料:

    1. https://www.runoob.com/python/python-exceptions.html

    2. https://www.cnblogs.com/klchang/p/4635040.html

    展开全文
  • Metis:学习如何在共享容器集群大规模调度长期运行的应用程序 该存储库包含tensorflow实现,用于使用分层强化学习(HRL)进行基于强化学习的长期运行应用程序调度。 依存关系 Python 3.5或更高版本 Tensorflow ...
  • 由于只能在SwissFEL网络访问此基础架构,因此代码需要在直接访问该网络的计算机上运行。 通过使用以下代码,您可以从波束同步通道的任何组合获得自定义的同步流: from bsread import source with source ( ...
  • xshell 后台挂起程序运行-nohup命令

    千次阅读 2019-11-07 17:09:27
    如果您在使用xshell进行远程连接ubuntu16.04服务器,进行运行服务或程序,一般情况下关掉终端或断网后程序会自动终止了,这很显然不是想看到的结果。下面介绍一下如何程序在后台一直运行下去。 其实很简单,只需要...

    如果您在使用xshell进行远程连接ubuntu16.04服务器,进行运行服务或程序,一般情况下关掉终端或断网后程序会自动终止了,这很显然不是想看到的结果。下面介绍一下如何让程序在后台一直运行下去。

    其实很简单,只需要一行命令。这里以运行python程序为示例:
    运行命令格式:

    • nohup command > log.txt 2>&1 &

    在终端命令行中,输入运行命令

    • nohup python -u test.py > ./log.txt 2>&1 &

    使用tail命令查看运行日志

    • cd your_log_path # 切换到自己日志的保存目录
    • tail -n 5 ./log.txt # 显示日志的最后五行,这里可以定义自己要查看的行数

    查看当前后台有多少 个命令在运行

    • jobs -l # 不关闭xshell的情况下,有效(当关闭掉session终端时,是查询不到的,但后台还在运行);
    • ps -aux | grep python(加上grep python,表示过滤带python的程序)# 查看所有进程的命令。

    关闭想要后台运行的程序

    • kill %num # num是jobs查看到的自己工作编号
    • kill pid # pid是ps命令查看的job的自己进程编号(推荐这个吧)
    展开全文
  • 首先要清楚,什么是异常,异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下python的异常处理...

    原标题:python错误和异常处理怎处理你知道么

    异常处理

    什么是异常?

    首先要清楚,什么是异常,异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下

    python的异常处理

    异常是由错误触发的,那么错误有哪些情况呢?

    1.语法错误:

    3e28a63875db403fb54236c670a4166b.png

    在学习中有迷茫不知如何学习的朋友小编推荐一个学Python的学习q u n 227 -435- 450可以来了解一起进步一起学习!免费分享视频资料

    2.逻辑错误

    7afe66a90fbd4c818fdcdf97dcc8ec85.png

    异常的种类

    在平时编码过程中,常见的异常有以下这些:

    8121fad92d194e6f8d22123f42ec5bef.png

    当然,还有其他异常,这里就不做过多演示。出现异常,我们肯定想到要处理,不然程序就直接报错崩溃了。其实我们一直在处理异常,只是没有发现,比如要判断你输入的内容是不是数字,我们以前是这么判断的:

    aa82152eb93441cbae884492442f2e4f.png

    在这里if就是在处理异常,但是,如果我还有其他程序也要运行,那就要写成这样了:

    7b73db15763648f4aaa173e49b8ef8d3.png

    这时候,你会发现,程序写的很长,可读性差,如果有十个这样的输入,那这个程序就没法看了,这时候,python提供了一种异常处理的方法try...except...

    part1 基本语法

    889840a17ba94748bccb31fb23c90423.png

    现在用这套方法来处理上面的异常,看看效果怎么样:

    726931981251429caac94a5a82588ea3.png

    这样一看代码简洁了很多啊,效果很完美

    part2 异常只能用来处理指定的异常情况,其他情况不会处理

    我们可以试一下,把错误类型改成别的,看看会怎样:

    3f78773f495544f1a12e72dbdbcd0883.png

    看来错误类型还要对应才行。

    part3 多分支

    7a8ded4cb81642fc9c5bb7f7ddd01d3c.png

    这时候,有人就会觉得,万能异常这么厉害,我还要写什么其他异常的,全部用这个不就好啦?这个怎么说呢,要分两点来看吧:

    1.如果你想要的效果是,无论什么异常,你都直接无视或者说用一种处理机制,那么就直接用吧,没问题,

    2.如果你要根据异常类型处理不同机制,那还得用多分支的方式,

    当然,你可以结合多分支和万能异常一起使用啊,这样多分支的健壮性会更好、

    part5 异常的其他结构

    下面来看看异常处理的其他结构:

    b18b0ed15f03473388d2e3bebabf235c.png

    6b5134f0f1644de3b06ba575afdda32d.png

    97625d170ea947b39fc04bd9baef3c46.png

    part6 主动触发异常

    我们学过主动触发异常用的是raise,下面看一下能不能捕获:

    e881d4586e3846d3a28bb31bc89fda42.png

    part7 自定义异常

    如果你想自定义一个异常,也是可以的。异常是什么,就是一个类嘛,那我们就定义一个异常类看看:

    b582a77401164447b5d037280d0dfc9f.png

    报错了,看错误提示,再看看type错误是怎么写的,原来要继承一个叫BaseException的类,再试一下:

    c9b942024ee74de3b8ea232845f667bb.png

    完美了,成了。

    part8 断言

    断言可以说就是if的一种简写,直接看例子吧:

    91d60c167d854023b429d30857415ae1.png

    如果判断不正确:

    23ab00ecd66047dd95aca73ff8e6ae3d.png

    这个完全可以用if写:

    cec4392e43574eb0aa1d456c98800a68.png

    效果完全一样

    part9 try...except...的好处和用法:

    try...except...就是取代了if的那种方法,让你的代码在保证可读性的情况下,还增强了健壮性,提高了容错率,使用这种方法:

    1.把错误处理和你的主逻辑分开了

    2.代码更容易组织,更清晰,复杂的任务更容易实现

    3.更安全了,不会因为一些小错误导致程序崩溃

    但是要清楚的一点是,if和try...except...都是python中处理异常的方法,不要学了try就说if和异常处理没有关系了。其次,学完这个后发现try...except...很强大,是不是每一段代码都可以加这个处理异常,就不用管报错了,这是肯定不行的,try...except...还是要慎重使用,首先try...except是你附加给你的程序的一种异常处理的逻辑,与你的主要的工作是没有关系的,这种东西加的多了,会导致你的代码可读性变差,然后异常处理本就不是你混乱逻辑的保姆,只有在错误发生的条件无法预知的情况下,才应该加上try...except返回搜狐,查看更多

    责任编辑:

    展开全文
  • Python--异常

    2018-04-24 00:01:00
    异常 ...在Python中异常一旦发生,将会终止程序运行如何引发异常? 使用raise语句自己触发异常 raise [Exception [, args [, traceback]]] def functionName( level ): if level &lt...
  • python的异常处理

    2019-04-06 23:27:51
    首先要清楚,什么是异常,异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下 python的异常处理 ...
  • python的异常处理

    2019-04-06 23:31:45
    首先要清楚,什么是异常,异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下 python的异常处理 ...
  • 这时如果不处理这些异常,程序很可能因报错而终止运行,所以异常处理还是十分有必要的。 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的...
  • Python中异常会导致运行时错误异常就是一个表示阻止执行正常进行的错误或情况 Python 提供异常处理与断言两个非常重要的功能来处理Python程序运行中出现的异常与错误这种异常处理机制为复杂程序提供了强有力的...
  • 程序一旦出现异常会导致程序运行终止。即异常后的代码不会执行。 1.2 如何处理异常 程序出现异常的时候并不是让我们的程序直接终止python希望在出现异常的时候,希望我们编写相应的代码来书写。 try语句: try:...
  • python异常处理

    2021-04-06 21:04:24
    文章目录@[toc]1.异常处理1.1什么是异常?1.2为何要处理异常?1.3如何去处理异常?...为了增强程序的健壮性,程序出错,程序不会终止,为了捕捉异常并处理:将出错信息记录到日志 1.3如何去处理异常? 1.3.
  • Python编程入门经典

    热门讨论 2013-10-27 14:17:39
    10.4.5 将模块作为程序运行 165 10.5 创建一个完整的模块 166 10.6 安装模块 171 10.7 本章小结 174 10.8 习题 175 第11章 文本处理 177 11.1 文本处理的用途 177 11.1.1 搜索文件 178 11.1.2 日志剪辑 179 11.1.3 ...
  • 当发生异常时,我们需要捕获它并进行处理,否则程序终止运行。但如何处理异常呢?有哪些方法?接下来就给大家讲解Python异常处理机制。 想要学好Python异常处理,我们要了解四个关键词和五种处理机制: 1、四个...
  • 当发生异常时,我们需要捕获它并进行处理,否则程序终止运行。但如何处理异常呢?有哪些方法?接下来的就给大家分享Python异常处理机制。  想要学好Python异常处理,我们要了解四个关键词和五种处理机制:  四...
  • python/访问数据库

    2020-08-11 08:06:33
    程序运行的时候,数据都是在内存的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。 而如何定义数据的存储格式就是一个大...
  • python学习——数据库

    2016-07-19 08:24:30
    程序运行的时候,数据都是在内存的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。 而如何定义数据的存储格式就是一个大...
  • 程序运行的时候,数据都是在内存的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。 而如何定义数据的存储格式就是一个大...
  • 程序运行的时候,数据都是在内存的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。 而如何定义数据的存储格式就是一个大...
  • python学习第二十八天

    2020-08-10 18:18:42
    目录一、异常处理1.1、什么是异常1.2、为何要处理异常1.3、如何处理异常1.3.1、针对语法的错误1.3.2、针对...程序一旦出现错误,便会产生一个异常,若程序中没有处理它,就会抛出该异常,程序运行也随之终止。在Py
  • 为了增强程序的健壮性,即便是程序运行过程出错了,也不要终止程序,而是捕捉异常并处理:将出错信息记录到日志内. 3. 如何处理异常? 3.1 语法上的错误SyntaxError, 处理方式一:必须在程序运行前就...
  • 程序运行的时候,数据都是在内存的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。 而如何定义数据的存储格式就是一个大...
  • 程序运行的时候,数据都是在内存的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。 而如何定义数据的存储格式就是一个大...
  • 程序运行的时候,数据都是在内存的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。 而如何定义数据的存储格式就是一个大...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

python中如何终止程序运行

python 订阅