我有一个函数可以调用多个Redis分片,并将结果存储在预分配的 Python列表中。
基本上,代码如下:
def myfunc(calls):
results = [None] * len(calls)
for index, (connection, call) in enumerate(calls.iteritems()):
results[index] = call(connection)
return results
显然,截至目前,这依次调用各种Redis分片。我打算使用线程池并使这些调用并行发生,因为它们可能需要相当长的时间。
我的问题是:鉴于results
列表已预先分配,并且每个调用都有专用插槽,我是否需要锁定以放置每个线程的结果或者是否存在保证它没有工作吗?
我显然会在最后对结果进行分析,但如果我不需要,我就不想锁定。