RuntimeError: Internal: [MASK] is already defined解决方案

  大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。

  本文主要介绍了RuntimeError: Internal: [MASK] is already defined解决方案,希望能对使用ChatGLM的同学有所帮助。

1. 问题描述

  今天在加载ChatGLM模型时,却出现了RuntimeError: Internal: [MASK] is already defined的错误提示,具体报错信息如下图所示:
在这里插入图片描述

  在经过了亲身的实践后,终于找到了解决问题的方案,最终将逐步的操作过程总结如下。希望能对遇到同样bug的同学有所帮助。

这个错误通常是因为在已经运行的事件循环中再次运行了事件循环。 在Python中,每个线程只能有一个事件循环。如果在一个线程中已经运行了事件循环,再次调用`asyncio.get_event_loop().run_until_complete()`会引发这个错误。 解决方法是在调用`asyncio.get_event_loop().run_until_complete()`之前,先判断当前线程是否已经有事件循环在运行,如果有,则直接使用当前线程的事件循环,否则创建一个新的事件循环。 以下是修改后的示例代码: ```python import asyncio import re import os import aiohttp from pyppeteer import launch async def download_douyin_video(url, save_dir): # 创建浏览器实例 browser = await launch(headless=True) page = await browser.newPage() # 访问抖音网页 await page.goto(url) # 等待视频加载完成 await page.waitForSelector('.video-player video') # 获取视频url和标题 video_url = await page.evaluate('document.querySelector(".video-player video").src') title = await page.title() # 关闭浏览器 await browser.close() # 去除水印 video_url = re.sub('watermark/.*?/', '', video_url) # 下载视频到本地 os.makedirs(save_dir, exist_ok=True) with open(f'{save_dir}/{title}.mp4', 'wb') as f: async with aiohttp.ClientSession() as session: async with session.get(video_url) as resp: f.write(await resp.read()) if __name__ == '__main__': url = input('请输入抖音视频地址:') save_dir = 'e:/下载短视频' # 判断当前线程是否已经有事件循环在运行 try: loop = asyncio.get_event_loop() except RuntimeError: loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) loop.run_until_complete(download_douyin_video(url, save_dir)) ``` 这样,即使在已经运行的事件循环中再次运行事件循环,也不会引发`RuntimeError`错误了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编程的喵喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值