Array로 공유 리스트 변수 생성방법 질문
428
작성한 질문수 2
강사님 안녕하세요. 강의에서 말씀해주셨던 Manager 방식이 아닌 Array로 공유리스트 변수 생성하는 방법에 대해 질문드립니다.
1) Array("i", range(5)) 과 같은 형태로 생성한 공유 리스트 변수에 append하는 방법이 궁금합니다.
아래 코드로 실행하면
:AttributeError: 'SynchronizedArray' object has no attribute 'append'
에러가 발생합니다.
2) 변수 생성 시점에서 range( )의 값은 몇으로 정의하든 상관이 없나요? 지금은 예시로 range(5)로 했지만 리스트 안에 값이 얼마나 글어갈지 모르는 상황이라면 어떻게 정의해주어야 하는지 알 고 싶습니다.
아래 코드 전달드립니다. 감사합니다.
from multiprocessing import current_process, Process, Array, Manager, freeze_support
import time
import os
def cpu_bound(number, total_lst):
process_id = os.getpid()
process_name = current_process().name
print(f"Process ID : {process_id}, Prcoess Name : {process_name}")
total_lst.append(sum(i*i for i in range(number)))
def main():
numbers = [3_000_000 + x for x in range(10)]
# 프로세스 리스트 선언
processes = list()
# 프로세스 공유 매니저
manager = Manager()
# 리스트 획(프로세스 공유)
#total_list = manager.list()
total_list = Array("i",range(5))
# 프로세스 생성 및 실행
for i, num in enumerate(numbers):
p1 = Process(name=str(i), target=cpu_bound, args=(num, total_list,))
# 배열에 담
processes.append(p1)
p1.start()
# Join
for process in processes:
process.join( )
start_time = time.time()
print(f"total list = {total_list}")
print(f"Sum = {sum(total_list)}")
duration = time.time()-start_time
print(f"Duratrion = {duration} sec")
if __name__=="__main__":
main( )
답변 1
0
안녕하세요.
(1). https://docs.python.org/3/library/multiprocessing.html#multiprocessing.Array
읽어보시고 기본 값으로 정의 후 사용합니다. 일반적인 array와 달리 범위를 픽스해서 사용하는 것을
추천드립니다.
(2)번 항목은 파이썬 정수 범위 한계 안에서 정의 가능합니다. 주로 나중에 Generator를 사용하게 됩니다.
Pros and Cons 관련하여 질문드립니다
0
74
1
daemon=True가 안 먹히네요
0
100
2
threadpoolexecutor.submit 실행 시 순차 실행
0
232
2
queue 를 사용하는 이유?
1
246
1
멀티프로세싱 관련 질문
0
193
1
python gil 삭제
0
373
1
4분:59초 질문 그룹쓰레드 (5). 대기중인 작업 -> Queue -> 완료 상태조사 -> 결과 또는 예외 -> 단일화(캡슐화) 에 관해서
0
175
1
데몬스레드 설명
0
245
1
작업영역 질문
0
312
1
cmd에서 code작성시 기존에 깔아둔 vscode에서 이상한 화면이 뜨네요
0
292
1
ThreadPoolExecutor에서 작업중인 쓰레드가 있을때 대기할수 있는 방법이 있는지요?
0
289
1
py_ad_2_5_2 Sharing State의 Argument 부분
0
302
1
Thread(4) 16:10 스레드 질문
0
344
1
파이썬 병렬처리 관련 질문이 있습니다.
0
355
1
10:10쯤에 질문있습니다.
0
259
1
multiprocessing(5) - Queue 공유 질문 in multiprocess
0
440
1
seleniumwire multiprocessing 에러
0
730
1
logging과 print 차이 질문입니다..!
0
674
1
확장프로그램 질문입니다
0
301
1
KeyboardInterrupt 시 p.join에서 exception 발생
0
421
1
경쟁상태,교착상태, 메모리영역
0
259
1
ProcessPoolExecutor 사용 시 pid 증가
0
354
1
multiprocess 환경에서 특정 Process에 문제가 있거나 죽었을때 처리 방법
0
757
1
ThreadPoolExecutor 에서 max_workers 질문입니다.
2
1537
1





