【发布时间】:2010-04-17 18:59:15
【问题描述】:
我有一个起始数据列表。我想对起始数据应用一个函数,为起始数据中的每个元素创建几条新数据。有些新数据是相同的,我想删除它们。
顺序版本本质上是:
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!
我想通过多处理来加快速度。
我在想我可以使用 multiprocessing.Queue 来生成。 每个进程只会把它创建的东西放在上面,当进程在减少数据时,他们可以从队列中获取数据。
但我不确定如何减少不同的进程循环并在没有任何竞争条件或其他问题的情况下对其进行修改。
安全执行此操作的最佳方法是什么?还是有其他方法可以更好地实现这一目标?
【问题讨论】:
标签: python parallel-processing multiprocessing