zmq.Poller.poll( 1000 ) 是什么意思?
What is the meaning of zmq.Poller.poll( 1000 )?
我已经搜索过了,但我还是不明白这行是什么意思。
为什么要在函数中放1000?
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()
这里1000
是等待事件的超时时间,以毫秒为单位。
根据 zmq.Poller 的文档,poll()
方法的参数是以毫秒为单位的超时。当在已注册套接字上注册事件时,它 returns 形式为 (socket, event)
的元组。在这种情况下,我们只在一个套接字上查找入站消息:poll.register(socket, zmq.POLLIN)
。
可以在 The Guide 的匹配部分找到更多详细信息。
为什么?
因为如果没有放置任何值(或者如果 0
的值将显式地使用在那里),Poller.poll()
方法将不得不无限等待已配置的任何第一个事件一组这样的 Poller
-实例被监控 Socket
-实例。
那是什么意思?
在这种情况下,调用 Poller.poll()
方法 将阻塞 ,直到出现任何此类事件(如果出现),并且非零概率,根本没有这样的事件发生。
这种情况会有效地挂起您的应用程序处于无休止的(并且完全无法从您的代码内部控制)等待状态,这是正是阻止和避免进入这种状态的原因Poller.poll( aTimeoutInMILLISECONDs )
通过设置超时的方法来防止这种情况。
我已经搜索过了,但我还是不明白这行是什么意思。
为什么要在函数中放1000?
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()
这里1000
是等待事件的超时时间,以毫秒为单位。
根据 zmq.Poller 的文档,poll()
方法的参数是以毫秒为单位的超时。当在已注册套接字上注册事件时,它 returns 形式为 (socket, event)
的元组。在这种情况下,我们只在一个套接字上查找入站消息:poll.register(socket, zmq.POLLIN)
。
可以在 The Guide 的匹配部分找到更多详细信息。
为什么?
因为如果没有放置任何值(或者如果 0
的值将显式地使用在那里),Poller.poll()
方法将不得不无限等待已配置的任何第一个事件一组这样的 Poller
-实例被监控 Socket
-实例。
那是什么意思?
在这种情况下,调用 Poller.poll()
方法 将阻塞 ,直到出现任何此类事件(如果出现),并且非零概率,根本没有这样的事件发生。
这种情况会有效地挂起您的应用程序处于无休止的(并且完全无法从您的代码内部控制)等待状态,这是正是阻止和避免进入这种状态的原因Poller.poll( aTimeoutInMILLISECONDs )
通过设置超时的方法来防止这种情况。