카테고리 없음

[파이썬] 스레드를 실행하는 동안 다중 스레딩 Python 응용 프로그램이 중단됨

행복을전해요 2021. 1. 12. 00:57

기본적으로 gobject 바인딩은 다중 스레드를 인식하지 않습니다. 가져온 직후 다음을 수행하십시오 gobject.

gobject.threads_init()
-------------------

파이썬의 쓰레드는 함정이 될 수 있습니다. 사실 그것은 열린 문제입니다. 주요 문제는 GIL-Python의 글로벌 인터프리터 잠금입니다.

이 문제를 극복하기 위해 발명 한 방법 중 하나는 "다중 처리"모듈 (python 2.6의 새로운 기능)입니다. "스레딩"인터페이스를 유지하지만 실제로는 별도의 프로세스에서 코드를 실행합니다. jsut를 다중 처리로 대체 할 수 있습니다. 그러나 : 모든 dbus 상호 작용, GUI 등을 메인 "스레드"(즉, 단일 프로세스)에서 수행하고 데이터를 하위 프로세스 (문자열, 목록, 사전 등)와 교환합니다. 좋아.

또한 주어진 문자열이 threading.enumerate의 반환 값에 있는지 확인하기 위해이 모든 정규 표현식 Voodo가 왜 있는지 알 수 없습니다. ?? 파이썬에는 "in"연산자도 있습니다 (따라서 str의 인덱스를 사용하거나 메서드를 찾을 필요도 없습니다).

전체 check_running방법을 다음과 같이 바꿀 수 있습니다 .

def check_running(self):
    return 'ThreadTest' in str(threading.enumerate())
    


출처
https://stackoverflow.com/questions/2006132