@Xpym4uk76

Как создавать более двух потоков не останавливающих программу [Python]?

Имею я код игры для телеграм бота, создаётся таймер 60 секунд, для одной комнаты он создаётся нормально и работает, но когда создаются две комнаты, тобиж начинают работать два потока, таймер продолжается но бот останавливается и бот не реагирует на сообщения пользователей. Хочу исправить, чтобы таймер шёл независимо, чтобы можно было делать более 2 потоков не пересекающихся (Простите если не так говорю, я в потоках почти 0)

g_time = 0
pl_room_id = room_num
ng_threadadd(pl_room_id, g_time, host_id, player_id)

def ng_threadadd(pl_room_id, g_time, host_id, player_id):
	event = threading.Event()
	thread = threading.Thread(target=ng_everysectimer, args=(event,pl_room_id,g_time,host_id,player_id,))
	thread.start()
	while not event.isSet():
		try:
			logging.debug("Добавление из главного потока")
			event.wait(0.75)
			thread.join()
		except KeyboardInterrupt:
			event.set()
			break
			
def ng_everysectimer(event, pl_room_id, g_time, host_id, player_id):
	while not event.isSet():
		connection = sqlite3.connect('database.db')
		cursor = connection.cursor()
		cursor.execute(f'SELECT game_ended FROM users WHERE user_id = {pl_room_id};')
		boolgameend = cursor.fetchone()[0]
		if str(pl_room_id) in games and host_id != 0 and player_id != 0 and boolgameend == 0:
			if not g_time >= 60:
				event.wait(1)
				g_time = g_time + 1
			else:
				gameended(host_id, player_id, pl_room_id)
				event.set()
				break
		elif boolgameend == 1:
			event.set()
			break
		else:
			event.set()
			break
  • Вопрос задан
  • 186 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы