1

同時に実行する必要がある複数のメソッドを設定しています。上記のメソッドに個別のスレッドを作成することにしました。別のスレッドを作成することだけを目的として作成した方法もあります。これが私がしたことの例です。私の質問は、どうすればこれらのスレッドを安全に閉じることができるかということです。

from threading import Thread

....

def startOtherThread():
    Thread(target = myMethod).start()

Thread(target = anotherMethod).start()

....
4

1 に答える 1

2

スレッドを閉じません。target= メソッドが終了するまで実行されます。スレッドを開始するために別の方法を導入しようとしている理由は明らかではありませんThread(target=...).start()。単純に見えます。

スレッドを操作する場合、次の 3 つの基本的なオプションがあります。 - 子スレッドが関数の
使用を終了するまでメイン スレッドで待機する - 何もせずに子スレッドを実行させる -メイン スレッドが終了し たら、setDeamon(True) を使用して子スレッドを終了するスレッド オブジェクト。join()

また、cPython の GIL (Global Interpreter Lock) に注意する必要があります。

スレッドの基本的なテスト コードを次に示します。

import threading
import time
import sys


def f():
    sys.stderr.write("Enter\n")
    time.sleep(2)
    sys.stderr.write("Leave\n")


if __name__ == '__main__':
    t0 = threading.Thread(target=f)
    t1 = threading.Thread(target=f)
    t0.start()
    time.sleep(1)
    t1.setDaemon(True)
    t1.start()
    #t1.join()
于 2012-08-14T23:15:58.300 に答える