gpt4 book ai didi

Python 多线程,用于消息传递和避免处理器占用的队列

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:30 29 4
gpt4 key购买 nike

我有一个进程使用队列在线程之间发送消息。

# receiver.py
class Receiver(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.daemon = True
self.inbox = Queue.Queue()

def run(self):
while True:
if not self.inbox.empty():
msg = self.inbox.get()
# do other stuff


# main.py
def main():
R1 = Receiver()
R2 = Receiver()
R1.start()
R2.start()

# spin up child threads that can also stuff messages into Receiver() inboxes

while True:
msg = "You're hogging processor time"
R1.inbox.put(msg)
R2.inbox.put(msg)
# do a whole bunch more fancy stuff

if __name__ == '__main__':
main()

当我查看分配给此进程的处理器时间百分比时,它通常固定在 > 90%。

除了 while-True-check-inbox 之外还有更好的范例吗?我试过休眠,但线程需要立即响应。

最佳答案

Queue.get将等待(阻塞)直到队列中有东西。在此等待期间,线程将休眠,允许其他线程(和进程)运行。

所以只需删除对 self.inbox.empty() 的检查:

def run(self):
while True:
msg = self.inbox.get()
# do other stuff

关于Python 多线程,用于消息传递和避免处理器占用的队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29522303/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com