Вопрос концепции потоковой передачи Python

Я ' m в настоящее время находится в процессе написания клиент-серверного приложения в качестве упражнения, и у меня есть почти все для работы, но есть психическое препятствие, которое я не смог успешно преодолеть в Google.

Правильно ли я полагаю, что в серверном приложении распараллеливает обработчик пакетов и обработчик базы данных для работы из стека? Идея состоит в том, что один поток выполняет цикл прослушивания пакетов и добавляет данные в стек, а затем другой поток извлекает данные из нижней части стека и выполняет некоторые проверки по базе данных SQL.

В этом конкретном случае это больше важно, чтобы обработчик пакетов продолжал работать. Я предполагаю, что мой вопрос в том, является ли это подходящим использованием потоков и где я собираюсь столкнуться с проблемами, требующими блокировки потоков, например, следует ли блокировать обработчик базы данных, когда поток пакетов добавляет в стек, чтобы избежать проблем с попыткой записи и чтения, скажем, единственного значения в стеке и т. д.

Всем спасибо!

Вот фрагмент code, заметьте, он в процессе, так что не судите, а также моя первая попытка использовать python (который мне сейчас нравится больше, чем perl или php!).

class socketListen(threading.Thread):
    def run(self):
        while True:
            datagram = s.recv('1024')
            if not datagram:
                break
            packetArray = datagram.split(',')
            if packetArray[0] = '31337':
                listHandle.put(packetArray)
        s.close()

class stackOperations(threading.Thread):
    def run(self):
        while True:
            #pull the last item off the stack and run ops on it
            #listHandle.getLast is the last item on the queue
    def 

class listHandle():
    def put(shiftData):
        if not mainStack:
            mainStack = []
        mainStack.insert(0,shiftData)
    def getLast:
        return mainStack.pop()
5
задан Melignus 12 October 2010 в 16:44
поделиться