我使用ZeroMQ库编写了一些简单的PUB/SUB代码,代码需要等待无限期地返回消息。但是,在等待接收消息时,Python的CPU使用率会急剧上升,这似乎是一种繁忙等待的情况。有没有更好的方法来解决这个问题?我原本想这应该像在套接字上调用receive时一样,它不会持续执行指令并浪费CPU资源。
import sys
import zmq
port = "5556"
if len(sys.argv) > 1:
port = sys.argv[1]
int(port)
# Socket to talk to server
context = zmq.Context()
socket = context.socket(zmq.SUB)
print "Collecting updates from weather server..."
socket.connect ("tcp://localhost:%s" % port)
# Subscribe to zipcode, default is NYC, 10001
topicfilter = "10001"
socket.setsockopt(zmq.SUBSCRIBE, topicfilter)
# Process 5 updates
total_value = 0
for update_nbr in range (5):
string = socket.recv()
topic, messagedata = string.split()
total_value += int(messagedata)
print ('{} {}'.format(topic, message)