Продолжая цикл и двигаясь дальше (Python) - PullRequest
1 голос
/ 20 сентября 2011

У меня в приложении Python (v2.7) есть цикл while, который в основном связывается с устройством Bluetooth GPS, и цикл продолжается до тех пор, пока есть данные. По сути, цикл while выглядит так: -

> data = ""
> 
> if data == None:
>     print "Connection Failed" else:
>     print "Connection Established"
> 
> while True:
>     data = socket.recv(1024)

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

Как я могу оставить цикл работающим и перейти к следующей команде? Требуется ли многопоточность? Я новичок в концепции многопоточности, поэтому, пожалуйста, будьте терпеливы со мной:)

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 сентября 2011
received = ""
while True:
     data = socket.recv(1024)
     if not data:
         break # ends the while loop
     received+=data

do_stuff(received)
0 голосов
/ 20 сентября 2011

Да, поскольку вы, по сути, собираетесь делать две вещи одновременно, вам придется создать новый поток (используя threading) или, возможно, более просто новый процесс (используя multiprocessing или простоos.fork)

Самое простое, что нужно сделать, это поместить эту часть в функцию и использовать multiprocessing или threading, чтобы запустить функцию в другом процессе.Как правило, у вас будет меньше странностей с несколькими процессами, чем с несколькими потоками, только к вашему сведению.

...