1
私はTwistedに基づいてネットワークシステムの実装をしています。私は、メインスレッドではなく、新しいスレッドで関数(ある数学演算を行い、結果を出力する)を実行すると、print
関数がSegmentation fault
を引き起こすことに気付きました。出来ますか?それを回避するオプションはありますか?Python:複数のスレッドで印刷
私はTwistedに基づいてネットワークシステムの実装をしています。私は、メインスレッドではなく、新しいスレッドで関数(ある数学演算を行い、結果を出力する)を実行すると、print
関数がSegmentation fault
を引き起こすことに気付きました。出来ますか?それを回避するオプションはありますか?Python:複数のスレッドで印刷
スレッドで何かを印刷するには、スレッドロックを使用する必要があります。 例:このように
lock = Lock()
lock.acquire() # will block if lock is already held
print("something")
lock.release()
(この場合印刷)リソースが複数のスレッドによって同じ時間に使用されません。 スレッドロックの使用は、ロックが取得されたスレッドに注意を向けるようなものです。
おそらく、私はその可能性を推測します。マルチスレッディングでの 'print'のもっとも明白な問題は、' stdout'バッファがスレッドセーフではなく、 'print'を実行する複数のスレッドが、文字化けした出力につながる可能性があることです。ちょうどPythonに限られているわけではありません。 – cdarke
私はCygwinでPy3と同様の問題に気付きました –