如何对这两个嵌套循环进行多线程处理



我有两个循环在不同的列表上迭代。如何编写一个多线程python程序,使外循环的每个元素的内循环的所有迭代都发生在不同的线程中?例如,我们有以下两个列表:

A = [1,2,3]
B = [4,5,6]
C = []
for i in A:
for j in B:
C.append(i+j)

在这里,我们总共有九次迭代。每当第一个迭代器位于A的一个元素上时,另一个迭代程序就会在B的所有元素上进行迭代。并且,此操作重复三次。我想知道如何将这三个操作放在三个独立的线程中。

我建议使用Numba的腾跃来完成这类任务。http://numba.pydata.org/

由于GIL的原因,Vanilla CPython不能很好地处理并行处理。

import numba
@numba.njit(parallel=True)
def work():
A = [1,2,3]
B = [4,5,6]
X = [[0 for x in range(0)] for _ in A]
for idx in numba.prange(len(A)):
i = A[idx]
for j in B:
X[idx].append(i+j)
C = [0 for x in range(0)]
for x in X:
C = C + x
print(C)
work()

最新更新