首页 > 解决方案 > Python 多线程 pyshark

问题描述

我是 python 新手,我正在测试库 pyshark。

我想一直嗅探流量并做其他事情。但是当我启动嗅探器时,所有其他代码都停止工作。我试过 asyincio 线程和多线程,但它总是给我不同的错误。

这是我想在不阻塞应用程序的情况下运行的代码。

import pyshark
import asyncio

class Sniffer:

    @staticmethod
    @asyncio.coroutine
    def sniff():
        cap = pyshark.LiveCapture(interface='en0')
        cap.sniff_continuously(packet_count=0)
        for pkt in cap:
            print(pkt)

谢谢指教。

标签: pythonmultithreadingpyshark

解决方案


你可以试试多线程类。 https://docs.python.org/3/library/threading.html

例如 :

import thread
obj = Sniffer()
thread.start_new_thread( obj.sniff,)

如果您厌倦了多线程或其他人,另一种方法是创建新的 python 文件并导入您的嗅探器。

例如 :

# new python file
import sniffer
obj = sniffer.Sniffer()
while True:
    obj.sniff()

这种方式使用您的处理器内核。这就像多线程一样,差别不大,您的操作系统会自动完成这项工作。


推荐阅读