• 500,000 개의 요소가 포함 된 배열 (data = [])이 있고 각 요소에 1에서 10 사이의 임의 값 (random.randint (1,10))이 할당되어 있다고 가정합니다. 범위의 I 프로그램을 실행할 때 "NameError : name 'thread'가 정의되지 않았습니다."어떻게해야합니까?
(500,000) 데이터 [I] = random.randint()•은 사용자가 작업자 스레드 수 (N)를 결정할 수. 사용자는 1에서 10 사이의 값을 입력 할 수 있습니다. 유효하지 않은 값은 경고 메시지와 스레드 수를 5로 설정해야합니다. • N을 동일한 세그먼트로 자동으로 분할하는 방법 알아보기 작업자 스레드 (threadCount). 이 문제를 처리 할 하위 배열을 만들 수 없습니다. 인덱스를 기반으로 원래 배열을 분할하는 방법을 찾아야합니다. 힌트는 사용자가 제
세그먼트 1 (125,000 요소) 세그먼트 2 (125,000 요소) 세그먼트 3 (125,000 요소) 세그먼트 4 (125,000 요소)
의 THREADCOUNT을 체결했다고 가정하면 아래에 제공된다• 스레드를 생성 할 메서드를 결정하여 각 스레드에 배열의 세그먼트가 할당되도록합니다. 이 스레드는 할당 된 세그먼트에 대한 요소의 합계를 작성해야합니다.
DEF 합계 (ST, 단부 threadIndex을) : 단일 스레드 함수 원형 아래 주어진
여기서 성 및 최종 배열 세그먼트의 시작과 끝 지점을 나타내고, 인덱스는 스레드 번호이다.당신의 배열에서 동시에 실행할 수있는 프로그램을 보장하기 위해 잠금 장치를 확인해야합니다. 각 스레드가 작업을 완료
• 후 메인 프로그램 배열 요소의 총 개수만큼 부 합계 다이빙 합산하여 최종 평균을 계산한다.
최종 연습 : 배열이 작업자 스레드를 사용하여 임의의 숫자로 채워되도록 당신이 프로그램을 연장 할 수 있습니까?
내 코드 :
import random
import thread
def su(st,end,i):
global subtotal, data, locks
for index in range(st,end+i):
subtotal[i] += data[index]
lock.release()
numth = int(100)
data = list(range(numth))
for index in range(len(data)):
data[index] = random.randint(1,10)
wt=int(input("enter"))
locks = list(range(wt))
subtotal = list(range(wt))
seg = len(data)/wt
st=0
for i in range(wt):
st= i * seg
end = st *seg -1
thread.start_new_thread(su,())
locks=lock.acquire()
avg = sum(subtotal)/len(data)
print(avg)
오류 메시지를 청취해야합니다. – Jonast92
스택 오버플로에 오신 것을 환영합니다! 생각할 수있는 모든 인기있는 태그에 질문에 태그를 지정하지 마십시오. 이것은 파이썬 질문입니다. * Python 태그 만 사용하십시오. 귀하는 귀하의 게시물에있는 오류에 관해서도 우리에게 많은 것을 말하지 않았으며, 귀하는 문장으로 할 수있었습니다. ,,,이 내 첫 번째 질문은 여기 –
이다, 이것은 내 첫 번째 질문은 여기에 : 나는 그것을 제거하고 여전히 그래서 당신은 지금'수입 thread'을 가지고 사용하는 것과 같은 실수 –