Перед тем, как читать, знать, что я новичок в Python и очень новый для нарезания резьбы так что простите меня, если я неправильно понять, как работают темы или сделать ошибку новобранца: PPython Threading - Управление завершения нити и основной поток
Краткое описание моей цели:
- основной поток (а), («! начинают» например, отпечатки) некоторые вещи
- основной поток создается новый поток (б) сначала печатает «Thread B начал ", а затем печатает x + 1 навсегда (1, 2, 3 ...)
- Главная тема печатает "Woop!"
- Затем конец основного потока достигается, он завершает себя и затем переключается на нить б сделать б основной нити
- Программа теперь работает нитевую как основной поток так просто печать х + 1 навсегда и было забыто и уже не соответствующих
- Ctrl + C прекращает нить Ь и эффективно, вся программа будет прекращена, потому что поток а больше не существует
Вот что я так далеко (основы):
import threading, time
def printCount():
print "Thread B started"
x = 0
while True:
time.sleep(1)
x = x + 1
print x
## User Code ##
print "begin!"
threadB = threading.Thread(target=printCount)
threadB.start()
print "woop!"
Требования:
- Я не хочу, чтобы изменить ниже отметки «Код пользователя» много на всех. Я , конечно, не хочу, чтобы обернуть его в классе, функции или собственный нить
- Нажатие Ctrl + C в любой момент должен прекратить всю программу без каких-либо нитей слева работает (используя что-то вроде:
except
внутри пользователя код прекрасно
KeyboardInterrupt: os._exit(1)) - нитяный может продолжать работать вместо того, чтобы нить б основного нити, но в данном случае я не хочу код для обработки Ctrl + C завершения всей программы внутри кода пользователя раздел
Этот раздел пример не моя фактическая цель, просто упрощенная версия проблемы, которую я имею. Я пытаюсь создать инфраструктуру IRC, где пользователь может импортировать ее и использовать API очень просто, не загружая свой собственный код с помощью потоков и прерываний и т. П. Вот почему для кода пользователя важно быть максимально чистым.
Структура позволит пользователю создавать IRC-бот, который работает вечно, слушая команды, позволяя пользователю добавлять свои собственные команды. Ссылка Github - here, если вам интересно (это очень WIP atm).
Я хочу, чтобы нить, содержащую PrintCount продолжать работать вечно, но это в том esting! – Jazcash
@Jazcash О, мой плохой, думал, что я читал, что вы хотите, чтобы потоки НЕ запускались навсегда :) – Torxed