You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用fastai的download_images函数时触发多进程错误的原因及解决办法

使用fastai的download_images函数时触发多进程错误的原因及解决办法

问题原因

你遇到的这个报错是Windows系统下Python多进程机制导致的典型问题。从错误栈里的_check_not_importing_main()可以明确看出:

  • Windows中Python多进程默认采用spawn启动方式,这种方式会重新导入主脚本模块来创建子进程
  • 你的代码没有用if __name__ == '__main__':包裹核心执行逻辑,导致子进程启动时会重复执行下载、目录创建等代码,直接干扰了multiprocessing Manager的初始化流程,最终引发进程启动失败的错误
  • fastai的download_images底层依赖parallel函数实现加速,而parallel默认会启用多进程,这就刚好触发了这个多进程启动的冲突

快速解决办法

最直接有效的修复方式是把所有涉及执行逻辑的代码(尤其是调用download_images的循环部分)放到if __name__ == '__main__':代码块中,避免子进程重复执行初始化代码。

修改后的完整代码示例如下:

from duckduckgo_search import DDGS
from fastcore.all import *
from fastdownload import download_url
from fastai.vision.all import *
from time import sleep

def search_images(keywords, max_images=200):
    return L(DDGS().images(keywords, max_results=max_images)).itemgot('image')

# 基础测试代码(可选,若不需要可移除)
urls = search_images('bird photos', max_images=1)
print(urls[0])
dest = 'bird.jpg'
download_url(urls[0], dest, show_progress=False)
im = Image.open(dest).to_thumb(256,256)
download_url(search_images('forest photos', max_images=1)[0], 'forest.jpg', show_progress=False)
Image.open('forest.jpg').to_thumb(256,256)

searches = 'forest','bird'
path = Path('bird_or_not')

# 核心执行逻辑放到main块中
if __name__ == '__main__':
    for o in searches:
        dest = (path/o)
        dest.mkdir(exist_ok=True, parents=True)
        download_images(dest, urls=search_images(f'{o} photo'))
        sleep(10)  # 暂停避免服务器过载
        download_images(dest, urls=search_images(f'{o} sun photo'))
        sleep(10)
        download_images(dest, urls=search_images(f'{o} shade photo'))
        sleep(10)
        resize_images(path/o, max_size=400, dest=path/o)

其他可选方案

如果你暂时不想调整代码结构,也可以强制download_images不使用多进程,只需在调用时添加parallel=False参数(但下载速度会变慢):

download_images(dest, urls=search_images(f'{o} photo'), parallel=False)

另外你提到的pip无法更新问题和本次多进程错误无关,后续若仍有该问题,可尝试用管理员权限运行终端,执行python -m pip install --upgrade pip来排查。

备注:内容来源于stack exchange,提问作者Jacob F.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 12:08:02