在python中为线程代码添加多处理

时间:2017-10-14 16:25:31

标签: python multithreading python-3.x multiprocessing packet-capture

我正在编写一个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()

我希望能够将拥有更多消费者的消费者部分并行化,以便能够分析庞大的流量网络。

混合并发和并行是一个好主意吗?我怎么能这样做?

谢谢。

0 个答案:

没有答案