2
시작 데이터 목록이 있습니다. 시작 데이터의 각 요소에 대해 몇 가지 새로운 데이터를 만드는 시작 데이터에 함수를 적용하려고합니다. 새 데이터의 일부 조각은 동일하므로 제거하고 싶습니다. 파이썬 다중 처리로 데이터 생성 및 병합
순차 버전
은 본질적으로 :def create_new_data_for(datum):
"""make a list of new data from some old datum"""
return [datum.modified_copy(k) for k in datum.k_list]
data = [some list of data] #some data to start with
#generate a list of new data from the old data, we'll reduce it next
newdata = []
for d in data:
newdata.extend(create_new_data_for(d))
#now reduce the data under ".matches(other)"
reduced = []
for d in newdata:
for seen in reduced:
if d.matches(seen):
break
#so we haven't seen anything like d yet
seen.append(d)
#now reduced is finished and is what we want!
내가 멀티로이 속도를합니다.
나는 멀티 프로세싱을 사용할 수 있다고 생각하고있었습니다. 세대를위한 비용. 각 프로세스는 작성한 항목을 넣을뿐 아니라 프로세스가 데이터를 줄이면 큐에서 데이터를 가져올 수 있습니다.
하지만 다른 프로세스 루프를 줄이고 수정하거나 수정하지 않아도됩니다.
이것을 안전하게하는 가장 좋은 방법은 무엇입니까? 아니면 더 나은 목표를 달성하기위한 다른 방법이 있습니까?