저는 파이썬에 초보자이며 파이썬에서 멀티 스레딩의 개념을 이해하려고 노력합니다. 유닉스 멀티 스레딩 프로그래밍에 대한 나의 지식에 따라 main 함수가 종료되면 main 함수에 의해 생성 된 스레드는 스레드에서 수행중인 작업과 관계없이 종료됩니다 (pthread_join() 함수를 사용하지 않는 경우) .파이썬에서의 멀티 스레딩에서 예기치 않은 동작이 발생했습니다.
그러나 파이썬에서 멀티 스레딩을 수행하는 동안이 기능이 표시되지 않습니다. 내 스레드가 여전히 작업을 완료하는 내 주 스레드가 성공적으로 실행되고 있습니다. 파이썬과 유닉스의 스레드가 다르게 동작한다는 것을 알고 싶습니다. 또는 뭔가 빠졌습니다. 파이썬에서이 스레드 기능을 이해하는 데 도움을주십시오. 다음은 파이썬에서 사용중인 코드입니다.
#! /usr/bin/python
import logging
import random
import threading
import time
logging.basicConfig(level=logging.DEBUG,
format='(%(threadName)-10s) %(message)s',
)
class Counter(object):
def __init__(self, start=0):
self.lock = threading.Lock()
self.value = start
def increment(self):
logging.debug('Waiting for lock')
# Getting the Lock
self.lock.acquire()
try:
logging.debug('Acquired lock')
self.value = self.value + 1
finally:
# Releasing the Lock
self.lock.release()
def worker(c):
for i in range(2):
pause = 4
logging.debug('Sleeping for %0.02f', pause)
time.sleep(pause)
c.increment()
logging.debug('Done')
if __name__ == '__main__':
counter = Counter()
for i in range(2):
t = threading.Thread(target=worker, args=(counter,))
t.start()
logging.debug('Counter: %d', counter.value)
그래서 ... 귀하의 질문은 무엇입니까? 이것은 정말로 모호합니다. 기능에 대해 설명했지만 실제 질문은 없습니다. –