각 항목에 대해 주어진 인터벌에서 항목 목록을 통해 루프를 돌리는 응용 프로그램을 가지고있는 경우 (이는이 목록의 길이가 다양 함) 오히려 간단한 작업이지만 값을 추가하는 것이 아니라 그것은 정말로 복잡한 계산입니다.얼마 동안 잠글 지 얼마 안되는가
def method_1:
for item in the_list:
do_operation(item);
def do_operation(item):
lock()
//do some stuff.
unlock()
아니면이처럼을 수행해야합니다 :
def method_1:
lock()
for item in the_list:
do_operation(item);
unlock()
def do_operation(item):
//do some stuff.
나는이 실제로 생각
내가 궁금한 건 것은 내가이 (현재 솔루션) 등의 각 항목에 대한 고정한다입니다 정말 많이 대답하기가 힘듭니다. "그 일을하는 것"과 얼마나 걸리는지에 달려 있다고 생각하기 때문입니다. 그리고 나는 솔직히 이것이 얼마나 많은 시간이 걸리는 지 모른다. 특히 파이썬이 잠금 장치를 확보하는 데 걸리는 시간과 비교됩니다.
내 질문에 어떻게 든 개선 할 수 있다면 의견에 남겨주세요.
오버 헤드가 상대적으로 높은 금액이있을 경향을 할 수 있습니다. 따라서 나는 후자의 선택에 대해 논쟁하는 경향이있다. 특히 임계 영역의 일부가 아닌 루프의 실질적인 부분이없는 경우와 같이 특히 그렇습니다. 다른 한편,'do_operation'이 다른 곳에서 사용되고, 항상 보호되어야한다면, 함수 내에서 잠금을 수행하는 것이 합리적입니다. – jpm
스레딩을 사용하지 않는다면 필요 없습니다. 당신의 코드에 당신이 그것을 사용해야한다고 제안하는 것을 주목하고 있습니다. –
많은 잠금이 컨텍스트 관리자 프로토콜을 지원합니다 ('with lock : do stuff'). 이것은 예외 (대체 :'try :'/'finally :'절)의 경우 유용합니다. – glglgl