Python 2.7 使用pyping(带root)的python多线程ping返回了所有成功,怎么了
尝试使用pyping库(使用root用户基于ICMP的ping)在python中开发多线程ping应用程序 结果是根据上次IP结果返回所有成功/失败。下面给出了代码,我做错了什么。。(代码如下所示) 127.0.0.1是应该ping的环回。 192.168.1.20未退出,应失败 (请不要建议我为什么不应该使用root或其他方法…) 谢谢 --------当前结果------------- (这里0=成功,1=每个结果结束时失败) -------------代码-------------Python 2.7 使用pyping(带root)的python多线程ping返回了所有成功,怎么了,python-2.7,python-multithreading,Python 2.7,Python Multithreading,尝试使用pyping库(使用root用户基于ICMP的ping)在python中开发多线程ping应用程序 结果是根据上次IP结果返回所有成功/失败。下面给出了代码,我做错了什么。。(代码如下所示) 127.0.0.1是应该ping的环回。 192.168.1.20未退出,应失败 (请不要建议我为什么不应该使用root或其他方法…) 谢谢 --------当前结果------------- (这里0=成功,1=每个结果结束时失败) -------------代码------------- 您可能
您可能已经了解了这一点,但将threadlock移动到ping上方一行会产生所需的行为:
def run(self):
#here do ping
threadLock.acquire()
self.a = pyping.ping(self.ip)
print(self.ip , '->' ,self.a.destination_ip , '->' , self.a.ret_code)
threadLock.release()
('192.168.1.20', '->', '192.168.1.20', '->', 1)
('127.0.0.1', '->', '127.0.0.1', '->', 0)
('4.3.2.1', '->', '4.3.2.1', '->', 1)
('8.8.8.8', '->', '8.8.8.8', '->', 0)
('172.29.200.1', '->', '172.29.200.1', '->', 0)
('1.2.3.4', '->', '1.2.3.4', '->', 1)
您可能已经了解了这一点,但将threadlock移动到ping上方一行会产生所需的行为:
def run(self):
#here do ping
threadLock.acquire()
self.a = pyping.ping(self.ip)
print(self.ip , '->' ,self.a.destination_ip , '->' , self.a.ret_code)
threadLock.release()
('192.168.1.20', '->', '192.168.1.20', '->', 1)
('127.0.0.1', '->', '127.0.0.1', '->', 0)
('4.3.2.1', '->', '4.3.2.1', '->', 1)
('8.8.8.8', '->', '8.8.8.8', '->', 0)
('172.29.200.1', '->', '172.29.200.1', '->', 0)
('1.2.3.4', '->', '1.2.3.4', '->', 1)
我也在使用pmap看到同样的行为。看起来pyping不是线程安全的吗?我也看到了使用pmap的相同行为。看起来pyping不是线程安全的?
def run(self):
#here do ping
threadLock.acquire()
self.a = pyping.ping(self.ip)
print(self.ip , '->' ,self.a.destination_ip , '->' , self.a.ret_code)
threadLock.release()
('192.168.1.20', '->', '192.168.1.20', '->', 1)
('127.0.0.1', '->', '127.0.0.1', '->', 0)
('4.3.2.1', '->', '4.3.2.1', '->', 1)
('8.8.8.8', '->', '8.8.8.8', '->', 0)
('172.29.200.1', '->', '172.29.200.1', '->', 0)
('1.2.3.4', '->', '1.2.3.4', '->', 1)