tickers = ['AAPL','XOM','GOOG']
과 같은 주식 시세 표시기가 있고 내 "전통적인"파이썬 프로그램에서이 tickers
벡터를 반복하면 AAPL
과 같은 시세 표시 문자열을 선택하고 AAPL
주식을 포함하는 csv 파일을 가져옵니다. 리턴을 공용 함수에 대한 입력으로 사용하고 마지막으로 csv 파일을 출력으로 생성하십시오. 나는 4000 tickers 이상을 가지고 있고 각 ticker에 적용 할 함수는 처리하는데 시간이 걸린다. mpi4py
패키지로 컴퓨터 클러스터에 액세스하여 작업 당 약 100 개의 프로세서에 액세스 할 수 있습니다. 나는 잘 이해 (그리고 구현할 수 있었다) 파이썬에서이 mpi
example : mpi4py : dynammic 데이터 처리
from mpi4py import MPI
comm = MPI.COMM_WORLD
size = comm.Get_size()
rank = comm.Get_rank()
if rank == 0:
data = [i for i in range(8)]
# dividing data into chunks
chunks = [[] for _ in range(size)]
for i, chunk in enumerate(data):
chunks[i % size].append(chunk)
else:
data = None
chunks = None
data = comm.scatter(chunks, root=0)
print str(rank) + ': ' + str(data)
[[email protected]] ~/utils> mpirun -np 3 ./mpi.py
2: [2, 5]
0: [0, 3, 6]
1: [1, 4, 7]
그래서이 예제에서, 우리는 크기 8의 데이터 벡터가 각각의 프로세서 (총 3) 같은 수의 할당
데이터의 요소 비슷한 예제를 사용하고 각 프로세서에 하나의 주식 시세 표시기를 할당하고 각 시세 표시기에 대해 실행해야하는 기능을 적용하려면 어떻게해야합니까? 프로세서가 해제되면 파이썬에서tickers
벡터로 돌아가서 아직 처리되지 않은
ticker
을 처리하는 방법을 어떻게 알 수 있습니까?
귀하의 통찰력에 감사드립니다. 나는 너의 제안을 오늘 나중에 시험 할 것이다! 고맙습니다. – Plug4
그럼이 모든 것을 바꿀 것입니다 : 'data = [i는 범위 내입니다 (8)] # 데이터를 청크로 나누기 chunk = [[범위 내에서] (크기)에 대해] for i, 열거 청크 (데이터) : 덩어리 [i % 크기] .append (덩어리) else : data = None 덩어리 = None'당신이 옳은 것이 무엇입니까? 그리고 프로세스 (.)는 시세를 처리하는 제 기능입니다. – Plug4
그래, 나는'if ... else' 블록 전체를 제거하고 내가 가지고있는 블록으로 대체 할 것을 제안한다. 그런 다음 실제로이 작업을 수행하는'process' 함수를 구현하십시오. – Geoff