スレッドとマルチプロセッシングの新機能です。私はプロセスを開始したいくつかのコードを持っていると私は、コードは以下のこれに似ているこのPythonのスレッドと文字列
wating....
のようなもののアクティブ待ち状態を表示するために出力を望んでいた:
輸入 インポート時間
スレッディングclass ThreadExample(object):
def __init__(self):
self.pause = True
threading.Thread(target=self.second_thread).start()
# Some other processes
print("Waiting", end="")
while self.pause:
time.sleep(1)
print(".", end="")
print("Hooray!")
def second_thread(self):
print("timer started")
time.sleep(3)
self.pause = False
print("timer finished")
if __name__ == "__main__":
ThreadExample()
私は上記のコードを実行すると、私は出力を受け取る:
timer started
Do something else..timer finished
.
Hooray!
は驚くことではありませんが、始めに「timer started」と表示され、残りのテキストは最後に表示されます。 、ドットが1秒単位で表示され
timer started
Do something else.
.
timer finished
.
Hooray
:Iは、ラインプリントを変更した場合
( " "端部が=" ")(")を印刷するために"、私は、次の出力を受信しますそれが私の意図だった。
end = ""なしで1行に 'Waiting ...'を表示する方法はありますか?
第2に、これはprint()関数の内部と関係があると思いますが、そうでない場合は別の方法でスレッドを実行する必要がありますか?問題がGILではないと私は思っています。私はマルチプロセスを試しました。プロセスと同じ結果を得ました。
注:現代のPython(3.3以降)では、 'print'は' flush = True'を渡して、印刷後にフラッシュすることができます(https://docs.python.org/3/library/functions)。 html#print)、 'print'関数の完全なパワー/柔軟性を保ちます。 'print( '。'、end = ''、flush = True)'もこのトリックを行います。 – ShadowRanger
ありがとう、それは非常に便利です。 – VectorVictor