首页 > 解决方案 > 如何正确结束分配给 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 个?)。

标签: pythonmultithreadingtelegram

解决方案


找到了答案:

print(threading.active_count())  # 5
t = telebot.TeleBot('token')
print(threading.active_count())  # 7
t.stop_bot()
print(threading.active_count())  # 5

推荐阅读