gevent spawing - 按顺序而不是并发

时间:2016-07-02 20:44:34

标签: python gevent

我正在尝试使用gevent进行异步编程,而无法理解代码的工作方式。

我正在尝试使用已关闭端口(22)上的套接字ping google.com并期望item函数同时发生但不会发生

我有一个python代码如下

ping

我期待看到:

class Ping(object):

   def checkReachability(self,index):

      sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
      sock.settimeout(2)

      print index

      try:
           sock.connect(('google.com',22))
           gevent.sleep(0)
      except socket.error as e:
           print str(e)

      sock.close()

 def ping(self):

      threads = [gevent.spawn(self.checkReachability, i) for i in range(3)]
      gevent.joinall(threads)

if __name__ == 'main':
    m = Ping()
    m.ping()

这就是我得到的

0
1
2
timeout
timeout
timeout

任何帮助都会有所帮助。

由于

1 个答案:

答案 0 :(得分:0)

想出解决方案。

在导入中添加猴子补丁解决了我的问题。

from gevent import monkey
monkey.patch_socket()