广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python 多线程重启
  • 584
分享到

python 多线程重启

重启多线程python 2023-01-31 08:01:10 584人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

python 多线程程序运行中,会出现由于异常而导致某线程停止的情况,为了保证程序的稳定运行,需要自动重启down掉的线程. Python Threading类有一个setName()的方法,可以为线程设置名字。 threadin

python 多线程程序运行中,会出现由于异常而导致某线程停止的情况,为了保证程序的稳定运行,需要自动重启down掉的线程.
Python Threading类有一个setName()的方法,可以为线程设置名字。
threading.enumerate()可以获取当前的线程对象。

自动重启线程的思路如下:
1.使用setName()每个线程设置名字;
2.在初始化运行时使用threading.enumerate()获取当前所有线程对象,保存为初始线程组;
3.隔一段时间使用threading.enumerate()获取当前所有线程对象,与初始线程组对比,如果某个name缺失,则重新start。

下面举个例子:

#coding:utf-8
import threading

list_ip=['1.1.1.1','2.2.2.2','3.3.3.3'] #一组ip列表

def printIP(ip):
    print ip

#每180s获取当前线程名,并跟初始线程组比较,某一线程停止后自动运行
def checkThread(sleeptimes=180,initThreadsName=[]):
    for i in range(0,10080):#循环运行
        nowThreadsName=[]#用来保存当前线程名称
        now=threading.enumerate()#获取当前线程名
        for i in now:
            nowThreadsName.append(i.getName())#保存当前线程名称

        for ip in initThreadsName:
            if  ip in nowThreadsName:
                pass #当前某线程名包含在初始化线程组中,可以认为线程仍在运行
            else:
                print '==='+ip,'stopped,now restart'
                t=threading.Thread(target=printIP,args=(ip,))#重启线程
                t.setName(ip)#重设name
                t.start()
        time.sleep(sleeptimes)#隔一段时间重新运行,检测有没有线程down


if __name__ == '__main__':
    threads=[]
    initThreadsName=[]#保存初始化线程组名字
    for ip in list_ip:
        t=threading.Thread(target=printIP,args=(ip,))
        t.setName(ip)
        threads.append(t)

    for t in threads:
        t.start()

    init=threading.enumerate()#获取初始化的线程对象
    for i in init:
        initThreadsName.append(i.getName())#保存初始化线程组名字

    check=threading.Thread(target=checkThread,args=(180,initThreadsName))#用来检测是否有线程down并重启down线程
    check.setName('Thread:check')
    check.start()

--结束END--

本文标题: python 多线程重启

本文链接: https://www.lsjlt.com/news/192747.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python 多线程重启
    python 多线程程序运行中,会出现由于异常而导致某线程停止的情况,为了保证程序的稳定运行,需要自动重启down掉的线程. python Threading类有一个setName()的方法,可以为线程设置名字。 threadin...
    99+
    2023-01-31
    重启 多线程 python
  • python实现程序重启和系统重启
    def restart_program(): """Restarts the current program. Note: this function does not return. Any cleanup action...
    99+
    2023-01-31
    重启 程序 系统
  • python多线程————3、多线程间通
    1、共享变量 #通过共享变量 import time import threading url_list = [] def get_detail_html(): global url_list while True: ...
    99+
    2023-01-31
    多线程 python
  • Python 多线程
      文章来源:https://www.runoob.com/python/python-multithreading.html 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的...
    99+
    2023-01-31
    多线程 Python
  • python多线程
    Python 多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理。 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的...
    99+
    2023-01-30
    多线程 python
  • python—多线程
    一、多线程实例  线程时应用程序中工作的最小单位,python中提供了threading模块来对多线程操作,一般多核cpu采用多进程方式,单核才采用多线程方式  方法:  将要执行的方法threading.Thread作为参数传给构造方法(...
    99+
    2023-01-31
    多线程 python
  • Python多线程编程,线程锁
    多线程threading 模块创建线程创建自己的线程类线程通信线程同步互斥方法线程锁@需要了解!!!   什么是线程? 线程也是一种多任务的编程方法,可以利用计算机多核资源完成程序的并发运行。 线程又被称为轻量级进程 ...
    99+
    2023-01-30
    线程 多线程 Python
  • java怎么使用线程池启动多线程
    在 Java 中,可以使用线程池来启动多线程。以下是使用线程池启动多线程的示例代码:首先,需要导入 `java.util.concu...
    99+
    2023-09-15
    java
  • python多线程socket编程--多
    Python中实现socket通信的服务端比较复杂,而客户端非常简单,所以客户端基本上都是用sockct模块实现,而服务 端用有很多模块可以使用,如下: 1、客户端 #!/usr/bin/env python #coding...
    99+
    2023-01-31
    多线程 python socket
  • python selenium webdriver怎么实现多线程启动多个浏览器
    这篇文章主要讲解了“python selenium webdriver怎么实现多线程启动多个浏览器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python selenium webdriv...
    99+
    2023-06-05
  • Python多线程编程
      一个串行程序需要从每个I/O终端通道来检测用户的输入,然而程序在读取过程中不能阻塞,因为用户输入的到达时间的不确定,并且阻塞会妨碍其他I/O通道的处理。由于串行程序只有唯一的执行线程,因此它需要兼顾执行的多个任务,确保其中的某个任务不会...
    99+
    2023-01-31
    多线程 Python
  • python 多线程编程
    使用回调方式 import time def countdown(n): while n > 0: print('T-minus', n) n -= 1 time.sleep...
    99+
    2023-01-31
    多线程 python
  • qt怎么开启多个线程
    在Qt中,可以使用QThread类来开启多个线程。下面是一个简单的示例代码:```cpp#include #include clas...
    99+
    2023-09-22
    qt
  • Redis如何开启IO多线程
    这篇文章主要介绍了Redis如何开启IO多线程,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。开启 IO 多线程在「Redis 6」版本以前,Redis 是 「单线程...
    99+
    2023-06-27
  • C#多线程怎么启动Square
    本篇内容主要讲解“C#多线程怎么启动Square”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#多线程怎么启动Square”吧!在实际工作中,还需要使用到C#多线程的许多复杂特性。其中一个问题...
    99+
    2023-06-17
  • python多线程-Semaphore(
    Semaphore(value=1) Semaphore对象内部管理一个计数器,该计数器由每个acquire()调用递减,并由每个release()调用递增。计数器永远不会低于零,当acquire()发现计数器为零时,线程阻塞,等待其他线...
    99+
    2023-01-30
    多线程 python Semaphore
  • python 多线程+queue
    python的queue设计的是线程安全的,所以大家伙放心用吧! python多线程的一种简单的实现如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import threadi...
    99+
    2023-01-31
    多线程 python queue
  • python多线程threading
    本文通过 4个example 介绍python中多线程package —— threading的常用用法, 包括调用多线程, 同步队列类Queue, Ctrl+c结束多线程。 example1. 调用10个线程, 分别打印0~...
    99+
    2023-01-31
    多线程 python threading
  • Python 多线程 multithr
    【Python】python 多线程两种实现方式 目前python提供了几种多线程实现方式 thread,threading,multithreading ,其中thread模块比较底层,而threading模块是对threa...
    99+
    2023-01-31
    多线程 Python multithr
  • python之多线程
    一、threading 模块 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性 二、开启线程的两种方式 from threading import Thread import ti...
    99+
    2023-01-30
    之多 线程 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作