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