Я пытаюсь написать UDP-прослушиватель, который выполняет вызов API в ответ, но на основе данных, содержащихся в полученной датаграмме UDP. Кажется, callMultipleInThreads запускает обе функции в одном потоке. Получив UDP-дейтаграмму, я надеялся, что functionOne завершится как functionTwo запускается в новом потоке (чтобы выполнить вызов API). Это не похоже на это.Как обрабатывать данные за пределами Twisted thread
import time
from twisted.internet import reactor, threads
def functionOne(x):
print x
def functionTwo(x):
time.sleep(10)
print x
commands = [(functionOne, ["First Function"], {})]
commands.append((functionTwo, ["Second Function"], {}))
reactor.listenUDP(9999, threads.callMultipleInThread(commands))
reactor.run()
Я новичок в написании кода резьбы. Как лучше позволить второй функции не блокировать функциюOne от закрытия? Будет ли разветвление вызова API в funtionTwo лучшим методом?
Это неточно. Под «той же нитью» документация для 'callMultipleInThread' означает, что она будет запускать все функции в одном и том же * нереакторном * потоке. – Glyph
Спасибо за головы, @ Глиф. Я исправил ответ, поскольку неправильно понял документацию. – Shyba