在 google colab 中使用 bing_image_downloader 并行处理图像抓取
Parallel-process image scraping with bing_image_downloader in google colab
我有一个 pandas 数据框(名为 df
),如下所示:
search_term
fname
banana
fldr1
kiwi
fldr2
coffee.
fldr3
并且我正在使用以下 python 代码使用 search_term
抓取 Bing 中的图像,并将这些图像保存在 fname
中命名的文件夹中。
from bing_image_downloader import downloader
for index, row in df.iterrows():
print(row['search_term'])
downloader.download(row['search_term'], limit=200, output_dir="FOLDERX", adult_filter_off=True, force_replace=False, timeout=60)
os.rename(os.path.join("FOLDERX",row['search_term']), os.path.join("FOLDERX",row['fname']))
但我想 运行 同时进行此操作,因为我有很多搜索词要浏览。例如,如果有 10 search_term
个要通过,我希望并行处理 2 个作业,将搜索词分成 2 个并同时抓取图像。我在 google colab 中 运行ning 这个,到目前为止已经尝试过
import multiprocessing
from joblib import Parallel, delayed
def scrape_bing(df):
for index, row in df.iterrows():
print(row['search_term'])
downloader.download(row['search_term'], limit=200, output_dir="FOLDERX", adult_filter_off=True, force_replace=False, timeout=60)
os.rename(os.path.join("FOLDERX",row['search_term']), os.path.join("FOLDERX",row['fname']))
Parallel(n_jobs=2)(delayed(scrape_bing)(i, j) for i in range(5) for j in range(2))
但我不知道如何修改 `delayed' 中的参数使其生效。请帮忙?
无需使用额外的索引进行迭代,您可以简化 scrape_bing
并在 Parallel
代码中迭代数据帧行。
def scrape_bing(search_term, fname):
downloader.download(search_term, limit=200, output_dir="FOLDERX", adult_filter_off=True, force_replace=False, timeout=60)
os.rename(os.path.join("FOLDERX", search_term), os.path.join("FOLDERX", fname))
Parallel(n_jobs=2)(delayed(scrape_bing)(row['search_term'], row['fname']) for index, row in df.iterrows())
我有一个 pandas 数据框(名为 df
),如下所示:
search_term | fname |
---|---|
banana | fldr1 |
kiwi | fldr2 |
coffee. | fldr3 |
并且我正在使用以下 python 代码使用 search_term
抓取 Bing 中的图像,并将这些图像保存在 fname
中命名的文件夹中。
from bing_image_downloader import downloader
for index, row in df.iterrows():
print(row['search_term'])
downloader.download(row['search_term'], limit=200, output_dir="FOLDERX", adult_filter_off=True, force_replace=False, timeout=60)
os.rename(os.path.join("FOLDERX",row['search_term']), os.path.join("FOLDERX",row['fname']))
但我想 运行 同时进行此操作,因为我有很多搜索词要浏览。例如,如果有 10 search_term
个要通过,我希望并行处理 2 个作业,将搜索词分成 2 个并同时抓取图像。我在 google colab 中 运行ning 这个,到目前为止已经尝试过
import multiprocessing
from joblib import Parallel, delayed
def scrape_bing(df):
for index, row in df.iterrows():
print(row['search_term'])
downloader.download(row['search_term'], limit=200, output_dir="FOLDERX", adult_filter_off=True, force_replace=False, timeout=60)
os.rename(os.path.join("FOLDERX",row['search_term']), os.path.join("FOLDERX",row['fname']))
Parallel(n_jobs=2)(delayed(scrape_bing)(i, j) for i in range(5) for j in range(2))
但我不知道如何修改 `delayed' 中的参数使其生效。请帮忙?
无需使用额外的索引进行迭代,您可以简化 scrape_bing
并在 Parallel
代码中迭代数据帧行。
def scrape_bing(search_term, fname):
downloader.download(search_term, limit=200, output_dir="FOLDERX", adult_filter_off=True, force_replace=False, timeout=60)
os.rename(os.path.join("FOLDERX", search_term), os.path.join("FOLDERX", fname))
Parallel(n_jobs=2)(delayed(scrape_bing)(row['search_term'], row['fname']) for index, row in df.iterrows())