真正的程序员如何做服务器循环?

bri*_*ter 2 python multithreading

每次运行这个程序时,我都听说我的cpu风扇正在增强.我怀疑忙着等待代码中的循环是原因.我想知道一个真正的程序员将如何优化这个?

from multiprocessing import Process, Queue
import threading
class PThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        #view leave will set this event
        self.event = threading.Event()
    def run(self):
        while 1:
            if not self.event.is_set():
               print 'run'
            else:
               break



def server_control(queue):
    while True:
        try:
            event = queue.get(False)
        except:
            event = None
        if event == 'DETECTED':
            print 'DETECTED'
            t = PThread()
            t.start()
        elif event == 'LEAVE':
            print 'Viewer_left'
            t.event.set()
            t.join()
        elif event == 'QUIT':
                break
q=Queue()
p = Process(target=server_control, args=(q,))
p.start()
p.join()
Run Code Online (Sandbox Code Playgroud)

Wyz*_*a-- 5

如果一个线程需要等待一个事件,它应该睡眠直到事件发生,而不是忙于等待.您的事件对象有一个wait()可用于完成该操作的方法.调用它,它将不会返回,直到某个其他线程调用set()该事件(或超时过去,如果您指定一个).在此期间,线程不使用CPU.