Python 同时运行两个阻塞函数

Python 同时运行两个阻塞函数,python,twisted,scapy,Python,Twisted,Scapy,我一直在开发一个网络嗅探应用程序,目前我正试图使其能够远程运行。我使用twisted作为它的网络部分。本质上,我向嗅探器发送一个数据包,告诉它开始,然后在它应该停止时发送另一个数据包 我遇到的问题是twisted的reactor.run()和scapy的sniff()函数块,因此似乎不可能同时嗅探和发送嗅探数据。有什么固定的方法可以做到这一点吗?有。您可能需要一个多线程管理API,例如twisted.internet.threads.deferToThread(): 您可以像这样使用它: de

我一直在开发一个网络嗅探应用程序,目前我正试图使其能够远程运行。我使用twisted作为它的网络部分。本质上,我向嗅探器发送一个数据包,告诉它开始,然后在它应该停止时发送另一个数据包


我遇到的问题是twisted的reactor.run()和scapy的sniff()函数块,因此似乎不可能同时嗅探和发送嗅探数据。有什么固定的方法可以做到这一点吗?

有。您可能需要一个多线程管理API,例如
twisted.internet.threads.deferToThread()

您可以像这样使用它:

def runScapy():
    d = reactor.deferToThread(scapy.sniff)
    d.addCallback(doSomethingWithSniffResult)

reactor.callWhenRunning(runScapy)
reactor.run()

…虽然我不熟悉scapy,也不知道该界面实际是如何使用的。

也许吧?看起来很过时,所以我不知道它是否真的有效。对不起,这不是我想要的。这使用scapy来构造不阻塞的数据包,然后用twisted发送它们。我正在寻找一种同时嗅探和发送数据包的方法。