我正在编写一个Python 3脚本来嗅探和处理无线数据包。现在,我能够使用线程并同时运行生产者和消费者。
生产者嗅探数据包并实时地将每个数据包放入队列中,并且消费者从队列中获取数据包。
from threading import Thread
from queue import Queue
from scapy.all import *
queue = Queue(10)
class ProducerThread(Thread):
def run(self):
global queue
while True:
print("Starting producer thread")
sniff(iface="wlan2mon", store=0, prn=queue_packet)
def queue_packet(packet):
queue.put(packet)
class ConsumerThread(Thread):
def run(self):
global queue
while True:
p = queue.get()
queue.task_done()
print(p.summary())
ProducerThread().start()
ConsumerThread().start()
我希望能够将拥有更多消费者的消费者部分并行化,以便能够分析庞大的流量网络。
混合并发和并行是一个好主意吗?我怎么能这样做?
谢谢。