[PYTHON] 파이썬 - 특정 클래스에 의해 시작된 활성 스레드 수를 얻는 방법?
PYTHON파이썬 - 특정 클래스에 의해 시작된 활성 스레드 수를 얻는 방법?
코드는 다음과 같습니다.
class workers1(Thread):
... def __init__(self):
... Thread.__init__(self)
... def run(self):
... ...do some stuff
class workers2(Thread):
... def __init__(self):
... Thread.__init__(self)
... def run(self):
... ...do some stuff
if __name__ == "__main__":
... start workers
while True:
print "Number of threads active", threading.activeCount()
print "Number of worker1 threads", ?????, "Number of worker2 threads", ?????
원래 클래스가 활성 상태 인 스레드 수를 얻는 방법이 있습니까?
해결법
-
==============================
1.이것은 Doug Hellman의 다중 처리 ActivePool 예제 코드를 약간 수정 한 것입니다 (스레딩 사용). 아이디어는 풀장에 노동자를 등록시키고, 마무리 할 때 등록을 취소하고, 스레딩을 사용하여 풀의 활성 목록 수정을 조정하는 것입니다.
이것은 Doug Hellman의 다중 처리 ActivePool 예제 코드를 약간 수정 한 것입니다 (스레딩 사용). 아이디어는 풀장에 노동자를 등록시키고, 마무리 할 때 등록을 취소하고, 스레딩을 사용하여 풀의 활성 목록 수정을 조정하는 것입니다.
import threading import time import random class ActivePool(object): def __init__(self): super(ActivePool, self).__init__() self.active=[] self.lock=threading.Lock() def makeActive(self, name): with self.lock: self.active.append(name) def makeInactive(self, name): with self.lock: self.active.remove(name) def numActive(self): with self.lock: return len(self.active) def __str__(self): with self.lock: return str(self.active) def worker(pool): name=threading.current_thread().name pool.makeActive(name) print 'Now running: %s' % str(pool) time.sleep(random.randint(1,3)) pool.makeInactive(name) if __name__=='__main__': poolA=ActivePool() poolB=ActivePool() jobs=[] for i in range(5): jobs.append( threading.Thread(target=worker, name='A{0}'.format(i), args=(poolA,))) jobs.append( threading.Thread(target=worker, name='B{0}'.format(i), args=(poolB,))) for j in jobs: j.daemon=True j.start() while threading.activeCount()>1: for j in jobs: j.join(1) print 'A-threads active: {0}, B-threads active: {1}'.format( poolA.numActive(),poolB.numActive())
산출량
Now running: ['A0'] Now running: ['B0'] Now running: ['A0', 'A1'] Now running: ['B0', 'B1'] Now running: ['A0', 'A1', 'A2'] Now running: ['B0', 'B1', 'B2'] Now running: ['A0', 'A1', 'A2', 'A3'] Now running: ['B0', 'B1', 'B2', 'B3'] Now running: ['A0', 'A1', 'A2', 'A3', 'A4'] Now running: ['B0', 'B1', 'B2', 'B3', 'B4'] A-threads active: 4, B-threads active: 5 A-threads active: 2, B-threads active: 5 A-threads active: 0, B-threads active: 3 A-threads active: 0, B-threads active: 3 A-threads active: 0, B-threads active: 3 A-threads active: 0, B-threads active: 3 A-threads active: 0, B-threads active: 3 A-threads active: 0, B-threads active: 0 A-threads active: 0, B-threads active: 0 A-threads active: 0, B-threads active: 0
-
==============================
2.각 클래스에 대한 세마포를 사용하여 카운트를 얻을 수 있습니다 (링크 참조).
각 클래스에 대한 세마포를 사용하여 카운트를 얻을 수 있습니다 (링크 참조).
from https://stackoverflow.com/questions/4046986/python-how-to-get-the-number-of-active-threads-started-by-specific-class by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] sparse_softmax_cross_entropy_with_logits를 사용하여 tensorflow에서 가중 크로스 엔트로피 손실을 구현하려면 어떻게해야합니까? (0) | 2018.11.18 |
---|---|
[PYTHON] 파이썬 서브 프로세스의 파일 기술자 3에 쓴다. 객체를 열어 라. (0) | 2018.11.18 |
[PYTHON] Canvas에서 이미지를 업데이트하는 방법은 무엇입니까? (0) | 2018.11.18 |
[PYTHON] PyInstaller로 빌드 된 Windows EXE가 다중 처리와 함께 실패합니다. (0) | 2018.11.18 |
[PYTHON] Excel에서 셀 너비 조정 (0) | 2018.11.18 |