0

Pythonでマルチスレッド(2スレッド)を行う方法を探していました。

そのうちの1つがシリアルポートを常に読み取っていることを望みます。すべてのフレームを読み取り、データベースに保存します。私はすでにこれを行うスクリプトを作成しました。

2 つ目は、ソケット ポートをリッスンするようにします。そのポートから何かを受信したら、最初のスレッドを一時停止し、シリアル ポートに何かを書き込み、ソケットに書き込みます。その後、最初のスレッドの一時停止を解除し、リッスン ソケット ポートに戻ります。

1番目のスレッドでシリアルポートで答えを読むと、2番目のスレッドに読み取った値を渡す必要があり、より複雑になるため、その瞬間に1つのスレッドを別のスレッドから一時停止してシリアルポートを読み取ることが最善のアイデアだと思います。そうじゃない?

私はすでにシリアルポートに書き込む部分を持っており、ソケット部分のいくつかのチュートリアルをチェックしているので、問題はありません。しかし、あるスレッドから別のスレッドを一時停止することについては何も見つけられず、それは不可能だと考えています。

この場合、どうすればよいですか?

編集: 共有変数について尋ねる: グローバル変数を宣言して、次のようなものを作成できます。

global1
global2
Thread 1:

while(global1 == 0)
    do whatever
global2 = 1

thread 2:
    wait socket
    if dataReceived: global1 = 1
    if global2 = 1 do whatever on serial port
    global2 = 0
    when finish global1 = 0

2 つのグローバルを使用すると、thread1 に停止して次の反復に進むように通知できます。global2 を使用すると、2 番目のスレッドはシリアル ポートが使用されていないことを認識します...

Pythonで共有変数を宣言するにはどうすればよいですか? またはそれは単なる別の変数です....

4

1 に答える 1

0

プロセス間でオブジェクトを直接共有できるかどうかはわかりませんが、すべてのプロセスがオブジェクトをメイン プロセスと共有できるため、メイン プロセスを使用してオブジェクトをやり取りできます。

http://docs.python.org/2/library/multiprocessing.html#exchange-objects-between-processes

于 2013-05-10T18:08:09.817 に答える