2013-11-25 2 views
-1

• 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) 
+0

오류 메시지를 청취해야합니다. – Jonast92

+1

스택 오버플로에 오신 것을 환영합니다! 생각할 수있는 모든 인기있는 태그에 질문에 태그를 지정하지 마십시오. 이것은 파이썬 질문입니다. * Python 태그 만 사용하십시오. 귀하는 귀하의 게시물에있는 오류에 관해서도 우리에게 많은 것을 말하지 않았으며, 귀하는 문장으로 할 수있었습니다. ,,,이 내 첫 번째 질문은 여기 –

+0

이다, 이것은 내 첫 번째 질문은 여기에 : 나는 그것을 제거하고 여전히 그래서 당신은 지금'수입 thread'을 가지고 사용하는 것과 같은 실수 –

답변

2

당신은 밑줄을 제거하는 대신 thread_thread을 가져. _thread.start_new_thread() 줄에서도 밑줄을 제거하십시오. 일반적

은 밑줄로 시작하는 모듈을 사용하지 않는, 이들은 내부 구현의 세부 사항이다.

+0

유감을 위해 그 죄송합니다 –

+0

나를 메시지를 표시 * 코드 전체에 대해서만'스레드 (thread) '? –

+0

예! 나는 이제 나를 말하고 있음을했다 : 잠금 [I] =의 thread.allocate_locks() AttributeError가 : '모듈'개체가 어떤 속성 'allocate_locks' –

관련 문제