不共享数组的并行循环可以通过使用线程私有变量来解决。每个线程都拥有自己的私有变量,用于存储计算结果。以下是一个示例代码:
import threading
def parallel_loop(array):
# 创建与数组长度相同的线程私有变量列表
private_results = [0] * len(array)
def loop_func(i):
# 计算每个线程的结果
private_results[i] = array[i] * 2
# 创建线程列表
threads = []
for i in range(len(array)):
# 创建线程,每个线程执行循环函数
t = threading.Thread(target=loop_func, args=(i,))
threads.append(t)
t.start()
# 等待所有线程执行完成
for t in threads:
t.join()
# 返回最终结果
return private_results
# 测试示例
my_array = [1, 2, 3, 4, 5]
result = parallel_loop(my_array)
print(result)
在上面的示例中,我们通过创建线程私有变量列表private_results
来存储每个线程的计算结果。loop_func
函数是每个线程要执行的循环函数,它将数组中的每个元素乘以2,并将结果存储在线程私有变量列表中。然后,我们创建一个线程列表threads
,并使用threading.Thread
类创建线程,每个线程都执行loop_func
函数。最后,我们等待所有线程执行完成,并返回最终结果。
注意,由于每个线程都有自己的私有变量,所以不需要进行任何共享操作,因此可以避免并发问题。
下一篇:不工作-二次方程的根