私が作業しているPythonプロジェクトでスレッドを使用しようとしていますが、スレッドが自分のコードで動作しているように見えません。すべてのスレッドが順番に実行されているようです(つまり、スレッド1が終了した後にスレッド2が開始され、同時に開始されるわけではありません)。私はこれをテストするための簡単なスクリプトを書いており、それもスレッドを順番に実行します。Pythonスレッドでスレッドが順番に実行されているようです
import threading
def something():
for i in xrange(10):
print "Hello"
def my_thing():
for i in xrange(10):
print "world"
threading.Thread(target=something).start()
threading.Thread(target=my_thing).start()
は、ここで私はそれを実行しているから取得する出力です:
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
world
world
world
world
world
world
world
world
world
world
同じ動作は、ループの繰り返しはるかに大きい数で観察されます。
ウェブと年老いたSOの回答を検索しようとしましたが、助けてくれたものが見つかりませんでした。 誰かがこのコードの何が間違っているかを指摘できますか?
10000回の反復で同じ動作 – MAK
私が取り組んでいる実際のプロジェクトでは、スレッドの1つはメッセージをリッスンし、コールバック関数を彼らが到着します。他のすべてのスレッドをブロックするだけです。残念ながら、実際のループコードは変更できません(スレッド内のクラスのrun()メソッドを呼び出すだけです)。 – MAK
このようなスクリプトを実行すると、 './pythr.py |ユニーク-c'私は取得:8969こんにちは| 1ハローワールド| 6626世界| 1 | 3373世界| 1030こんにちは。だからそれはコントロールを変更します - それほど頻繁ではありません。 – viraptor