1

私は Python に完全に精通しているわけではありませんが、他の言語でのプログラミングの経験は豊富です。

TCP ネットワーク ストリームにパケットを挿入できるツールに取り組んでいます。アイデアは、私のコードが 2 つのネットワーク エンドポイント間の透過的なプロキシとして機能することです。プロキシが機能するようにコードを動作させ、パケットを解析して注入を自動化することもできます (つまり、特定の状態を検出し、パケットを変更/注入する) が、最終的な目標はユーザーの操作を含めることです。

私が解決しようとしているのは、コマンド ライン インターフェイスがユーザーにコマンドを要求している間に、ネットワークをバックグラウンドで実行する方法です。コマンドが与えられると、ある種のインジェクションが実行される場合があります。

C# では、これをバックグラウンド ワーカー タスクまたはスレッドで処理してから、CLI でイベントをトリガーしますが、この種の設計が通常 Python でどのように実装されるかについてはよくわかりません。これにどのようにアプローチすればよいですか?

4

2 に答える 2

2

バックグラウンド プロセスを使用してイベントをトリガーするパターンに精通している場合は、Python で同じアプローチを取ることができます。マルチプロセッシング モジュールを見て、バックグラウンド プロセスを作成し (グローバル インタープリター ロックの問題を回避します)、パイプを使用してメッセージをバックグラウンド プロセスに送信し、イベントをトリガーします。

別の方法として、 Trellisなどのパッケージを見て、イベント駆動型のアプローチを取るか、または Twisted フレームワークを検討することもできます。私はそれらを使用したことがないので、これらのいずれかについて話すことはできません.

お役に立てれば!

于 2013-05-09T16:00:16.437 に答える
1

スレッドは進むべき道です (バックグラウンド ワーカーは同じものではありませんか?)。このようなもの:

from Queue import Queue
import threading

queue = Queue()

def job():
    while True:
        command = queue.get() # <-- waits until something is in the queue
        # do something with the command

# main thread
t = threading.Thread(target=job)
t.daemon = True
t.start()

while True:
    command = raw_input("---> ")
    queue.put(command)
于 2013-05-09T15:50:24.127 に答える