이것은 파이썬에서 스레드를 사용한 첫 시도입니다. 다음 프로그램을 아주 간단한 예제로 작성했습니다. 목록을 가져 와서 일부 스레드를 사용하여 인쇄합니다. 그러나 오류가있을 때마다 프로그램이 우분투에서 멈 춥니 다. 다시 제어 프롬프트를 얻으려는 작업을 수행 할 수 없으므로 다른 SSH 세션을 다시 시작해야합니다. 내 프로그램에 문제가있다. 멈추지 않도록하기 위해 어떤 종류의 오류 처리가 있습니까? 당신의 노동자가 오류가 발생한으로하기 때문에 귀하의 질문이 걸려파이썬 스레드가 멈추거나 닫히지 않습니다.
from Queue import Queue
from threading import Thread
import HAInstances
import logging
log = logging.getLogger()
logging.basicConfig()
class GetHAInstances:
def oraHAInstanceData(self):
log.info('Getting HA instance routing data')
# HAData = SolrGetHAInstances.TalkToOracle.main()
HAData = HAInstances.main()
log.info('Query fetched ' + str(len(HAData)) + ' HA Instances to query')
# for row in HAData:
# print row
return(HAData)
def do_stuff(q):
while True:
print q.get()
print threading.current_thread().name
q.task_done()
oraHAInstances = GetHAInstances()
mainHAData = oraHAInstances.oraHAInstanceData()
q = Queue(maxsize=0)
num_threads = 10
for i in range(num_threads):
worker = Thread(target=do_stuff, args=(q,))
worker.setDaemon(True)
worker.start()
for row in mainHAData:
#print str(row[0]) + ':' + str(row[1]) + ':' + str(row[2]) + ':' + str(row[3])i
q.put((row[0],row[1],row[2],row[3]))
q.join()