我有一张图片列表。 如何使用多线程处理每个图像。
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)
每张图像分别进行处理。
如何解决?
答案 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