python - 如何正确结束分配给 Telegram Telebot 的线程?
问题描述
我正在使用 Telegram 机器人获取有关 Telegram 公共频道的一些统计信息。
在启动了几个机器人之后,我正面临着MemoryError
我的整体脚本。Error: can't start new thread
但是我不需要异步运行它们,所以我的问题不是关于如何并行处理多个线程。
我的问题是:如何正确结束 Telebot,以及自动专用于它的 WorkerThread(s)?
最小示例代码:
import telebot
import threading
import gc
print(threading.active_count()) # 5
t = telebot.TeleBot('token')
print(threading.active_count()) # 7
del t
print(threading.active_count()) # 7
gc.collect()
print(threading.active_count()) # 7
我希望活动线程的数量回到原来的 5 个(顺便说一下,为什么不是 1 个?)。
解决方案
找到了答案:
print(threading.active_count()) # 5
t = telebot.TeleBot('token')
print(threading.active_count()) # 7
t.stop_bot()
print(threading.active_count()) # 5
推荐阅读
- javascript - 如何使用 index.of 和 if 语句推送到数组
- c - 抑制由第三方库引起的间接泄漏
- node.js - 通过 fetch 获取公会成员需要很长时间并且抛出异常
- python - 创建一个从 1 到 3 的数字的 pandas 列并再次重复
- swift - 使用 CloudKit + CoreData,如何在没有 SwiftUI 的 @FetchRequest 的情况下从远程云更新中更新 UI?
- python-3.x - 高效的插值实现
- flutter - RenderBox 未布置:_RenderDecoration#f6ed4 relayoutBoundary=up8 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
- html - 在 TinyMCE 中添加自定义 html 和 css
- ajax - 如何在 ActiveForm Yii2 中正确添加已呈现新 FileInput 输入的当前表单?
- r - 使用 geom_smooth 将一条线拟合到多级变量的平均值