如何使用多线程处理每个图像

时间:2018-07-16 03:11:20

标签: python python-3.x

我有一张图片列表。 如何使用多线程处理每个图像。

import cv2

def job(a_img, b_img):  # want to use multi thread
    #  do something    

images = ['1.png', '2.png', '3.png', ..., '100.png']  # images list
out = []

for i in range(len(images) - 1):
    # read image
    img_1 = cv2.imread(images[i])
    img_2 = cv2.imread(images[i + 1])

    res = job(img_1, img_2)
    out.append(res)

每张图像分别进行处理。

如何解决?

1 个答案:

答案 0 :(得分:0)

如果您想提高性能,则应该研究多处理而不是多线程。所有线程都在您的CPU的单个内核中工作,但是它们在任务之间暂停并由另一个线程接管。因此,一次只能处理一个指令序列,但由于不同线程的暂停和运行,您会感觉到发生了多个任务。

为了通过给出一个精简的超短示例来回答您的问题,python文档本身有一些很好的示例,但这足够了:

使函数接受图像并对其进行处理,说distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip 然后使用多线程,如下所示:

target_func