Python 의 하위 스 레 드 와 하위 프로 세 스 는 어떻게 수 동 으로 끝 납 니까?

파 이 썬 의 하위 스 레 드 와 하위 프로 세 스 를 어떻게 끝 냅 니까?
하위 스 레 드 를 끝 내 는 방법:
이것 은 다른 큰 신 을 옮 기 는 코드 입 니 다.저 는 원 리 를 모 릅 니 다.어차피 가 져 오기 주 의 는 잠시 결점 을 발견 하지 못 했 으 니 먼저 사용 하 세 요.

import inspect
import ctypes
import threading
from time import sleep
 
 
def serial_read():
 
    while True:
 
        print("     !")
 
        sleep(1)
 
 
 
def _async_raise(tid, exctype):
    """raises the exception, performs cleanup if needed"""
    tid = ctypes.c_long(tid)
    if not inspect.isclass(exctype):
        exctype = type(exctype)
    res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(exctype))
    if res == 0:
        raise ValueError("invalid thread id")
    elif res != 1:
        # """if it returns a number greater than one, you're in trouble,
        # and you should call it again with exc=NULL to revert the effect"""
        ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None)
        raise SystemError("PyThreadState_SetAsyncExc failed")
 
 
def stop_thread(thread):
    _async_raise(thread.ident, SystemExit)
 
 
def Air():
 
    ords=0
 
    myThread = threading.Thread(target=serial_read)
 
    myThread.start()
 
    while True:
 
 
        ords+=1
 
        if ords==10:
 
            stop_thread(myThread)
            print("     ")
            break
 
 
        sleep(1)
 
 
if __name__ == '__main__':
 
    Air()
다음은 하위 프로 세 스 를 끝 내 는 방법 입 니 다:

import inspect
import ctypes
from time import sleep
from multiprocessing import Process
 
 
def serial_read():
 
    while True:
 
        print("     !")
 
        sleep(1)
 
 
def Air():
 
    ords=0
 
    myThread = Process(target=serial_read)
 
    myThread.start()
 
    while True:
 
 
        ords+=1
 
        if ords==10:
 
            myThread.terminate()
            print("     ")
            break
 
 
        sleep(1)
 
 
if __name__ == '__main__':
 
    Air()
클래스 를 사용 하면 어떻게 쓰 는 지,하위 프로 세 스 나 하위 스 레 드 를 끝 내 려 면 프로 세 스 대상 이나 스 레 드 대상 을 가 져 가 야 하지만 클래스 에 서 는 클래스 속성 을 만 드 는 방식 을 실현 하지 못 하고 self 를 사용 합 니 다.×××다른 방법 에서 호출 할 수 있 습 니 다.이 럴 때 클래스 속성 list 를 만 든 다음 에 하위 프로 세 스 나 하위 스 레 드 를 만 든 후에 대상 을 이 list 에 할당 한 다음 에 클래스 의 다른 방법 에서 이 list 의 요 소 를 호출 하면 하위 프로 세 스 나 하위 스 레 드 의 이미 지 를 얻 을 수 있 습 니 다.
예 를 들 면:

def startss(self,a1,b1,c1,under,rough,blue,among):
 
        #      
        p1=threading.Thread(target=self.line01,args=(a1,b1,under,rough,)) #   ,  
        p2=threading.Thread(target=self.line02,args=(a1,c1,under,blue,))
        p3=Process(target=self.Process01,args=(under,rough,blue,)) #    
 
        #among    list  
 
        among.append(p1)
        among.append(p2)
        among.append(p3)
 
        #      
        p1.start()
        p2.start()
 
        #       
        p3.start()
참고 자료:https://www.jb51.net/article/185867.htm
python 다 중 프로 세 스 가 하위 프로 세 스 를 종료 하거나 다시 시작 하 는 방법
파 이 썬 의 하위 스 레 드 와 하위 프로 세 스 가 어떻게 수 동 으로 끝 났 습 니까?의 글 은 여기까지 소개 되 었 습 니 다.더 많은 Python 의 하위 스 레 드 와 하위 프로 세 스 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기