Python ThreadPoolExecutor 异常中止解决方案

Python ThreadPoolExecutor 异常中止解决方案,第1张

通常情况,我们利用 Ctrl+C 程序触发 KeyboardInterrupt 异常,中止程序运行。线程池方案下, Ctrl-C 失效,当线程池里的线程任务跑完后,才会触发 KeyboardInterrupt

上下文管理协议相当于隐性地念中省略了 threadPool.shutdown(wait=True) ,同时,程序正常执行完成或出现异常中断的时候,就会调用 __exit__() 方法,接下来进行异常中止的基础。

适用于 Django 等 WEB 应用框架,本身自带多线程,修改全局变量简单,但要注意线程安全。

程序运行中,只需 sign = 1 或者 exiting.set() ,worker 函数则跳过主要运算部分滑高扰,剩余线程任务将迅速完成,变相达到中止多线程任务的目的。

提交给线程池的每个线程任务 task 加入 threadPool 中,方便后续对 task 进行 *** 作。当 for 循环内的 task 全部提交后,线程会再后台运行,而进程运行至 while 中堵塞,直至 threadPool 中最后一个线程是否 .done() 。若进程堵塞在 while 中接收到 Ctrl+C KeyboardInterrupt 异常,则从后往前取消 threadPool 中所有任务,信旦达到中止目的。

quit()   exit()

执行到此命令时,程序终止。

如果是程序陷入死循环,想强制结束,则按Ctrl + C。这个特别关键。

Python的设计哲学是“优雅”、“明确”、“简单”。因此,Perl语言中“总是有多种方法来做同一件事”的理念在Python开发者中通常是难以忍受的。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。

在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确的没有或者很少有歧义的语法。由于这种设计观念的差异,Python源代码通常被认为比Perl具备更好的可读性,并且能够支撑大规模的软件开发。这些准则被称为Python格言。在Python解释器内运行import this可以获得完整的列表。

扩展质料:

Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。

然而,Python Virtual Machine与Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一种则物圆更高级的Virtual Machine。这里的高级并不是通常意义上的高级,不是说Python的Virtual Machine比Java或.NET的功能更强大。

而是说和Java 或.NET相比,Python的Virtual Machine距离真实机器的距离更远。或者可以这么说,Python的Virtual Machine是一种抽象层次更高的Virtual Machine。

基于C的Python编译出的字节码文件,通常是.pyc格式。

除此之外,Python还可以以交互模式运行,比如主流 *** 作系统Unix/Linux、Mac、Windows都可以直接在命令模式下直接运行Python交互环境。直接下达 *** 作指令即可蚂基实现交互 *** 作。

参考资孙塌料:Python-百度百科


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12318023.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存