gpt4 book ai didi

python - zmq.Poller.poll( 1000 ) 是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-03 14:49:36 25 4
gpt4 key购买 nike

我已经搜索过了,但我还是不明白这行代码的含义。

为什么要在函数中放入 1000?

full code is here

class ClientTask(threading.Thread):
"""ClientTask"""
def __init__(self, id):
self.id = id
threading.Thread.__init__ (self)

def run(self):
context = zmq.Context()
socket = context.socket(zmq.DEALER)
identity = u'worker-%d' % self.id
socket.identity = identity.encode('ascii')
socket.connect('tcp://localhost:5570')
print('Client %s started' % (identity))
poll = zmq.Poller()
poll.register(socket, zmq.POLLIN)
reqs = 0
while True:
reqs = reqs + 1
print('Req #%d sent..' % (reqs))
socket.send_string(u'request #%d' % (reqs))
for i in range(5):
sockets = dict(poll.poll(1000))//HERE
if socket in sockets:
msg = socket.recv()
tprint('Client %s received: %s' % (identity, msg))

socket.close()
context.term()

最佳答案

为什么?

因为如果没有放置任何值(或者如果在那里显式使用 0 值),则 Poller.poll() 方法将必须等待对于一组已配置的此类 Poller 实例监控的 Socket 实例上的任何第一个事件,无限期地进行。

这意味着什么?

在这种情况下,对 Poller.poll() 方法的调用将被阻止,直到出现任何此类事件(如果出现),并且非- 零概率,根本没有这样的事件发生。

这种情况会有效地挂起您的应用程序处于无休止的(并且从代码内部完全无法控制的)等待状态,这正是阻止的原因 并避免进入这种状态,Poller.poll( aTimeoutInMILLISECONDs ) 通过设置超时的方法来防止这种情况。

关于python - zmq.Poller.poll( 1000 ) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45972607/

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