Skip to main content
 首页 » 编程设计

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

2024年12月31日33think

我有两个循环遍历不同的列表。我如何编写一个多线程 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 的 prange 来完成这类任务。 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()