擅长:python、mysql、java
<p>一个简单的方法是将gps位置存储在一个全局变量中,当需要打印一些数据时,让wifi嗅探线程读取全局变量;问题在于,由于两个线程可以同时访问全局变量,所以您需要用互斥体将其包装起来</p>
<pre><code>last_location = (None, None)
location_mutex = threading.Lock()
def gpsInfo():
global last_location
while True:
session.poll()
time.sleep(5)
if gps.PACKET_SET:
session.stream
with location_mutex:
# DON'T Print from inside thread!
last_location = session.fix.latitude, session.fix.longitude
time.sleep(0.1)
def WifiDetect(p):
if p.haslayer(Dot11):
if p.type == 0 and p.subtype in stamgmtstypes:
if p.addr2 not in observedclients:
with location_mutex:
print p.addr2, last_location
observedclients.append((p.addr2, last_location))
</code></pre>