Я пытаюсь создать программу на python, где мне нужно одновременно запускать два класса. Так что я пытаюсь сделать, так это то, что я просто создаю поток для каждого экземпляра класса. Программирование довольно ново для меня, так это то, что мы называем «ошибки пользователя»;)Не удалось запустить более одного потока сервера
Вот мой код:
import threading
import sys
servers = [
["Server 01", "192.168.0.1", 12345, "password"],
["Server 02", "192.168.0.1", 12346, "password"],
]
def main():
for row in servers:
serverName = row[0]
serverAddress = row[1]
rconPort = row[2]
rconPass = row[3]
th = threading.Thread(target = rcon.RconProtocol(serverAddress, rconPort, rconPass, serverName))
th.start()
if __name__ == '__main__':
main()
код прекрасно работает для первого сервера в servers
. Но затем он останавливается после th.start()
. Так что неважно, что я делаю после th.start()
, он не запускается. RconProtocol
не делает ничего особенного, кроме прослушивания гнезда. И здесь я думаю, что проблема. У меня есть бесконечный цикл в классе RconProtocol
(while True
).
Я пытался сделать подобную функцию (я сделал другой назвал two
тоже):
def one():
while True:
print "one"
и просто указывается его в качестве мишени для моей нити, и я получил тот же самый вопрос. Он работает без цикла while (просто напечатайте «один»).
Так что мне немного любопытно, почему это происходит и что я делаю неправильно. Обычно я считаю себя хорошим человеком Google, но я не мог найти подобных случаев. Моей голове не нравятся примеры, когда вам нужно использовать время или случайные примеры. Думаю, мне нужно увидеть более практические примеры.
Кстати, «неправильно ли» помещать цикл while в классе? Должно быть, это снаружи каким-то образом? Должен ли я, возможно, создавать потоки в моем классе RconProtocol
?
Надеюсь, что информации достаточно.
Заранее благодарен!
/Daniel
Большое вам спасибо. Попробуй это :)! – jagardaniel
@jagardaniel, [Примите ответ] (http://stackoverflow.com/help/accepted-answer), если мой ответ был полезен. – falsetru