しばらく実行した後に終了するプログラムを実装したいt
のですが、t
を使用してコマンドラインから読み取りますArgumentParser
。現在、私は次のコードを持っています(詳細を省略):
def run():
parser = create_arg_parser()
args = parser.parse_args()
class_instance = MultiThreadClass(args.arg1, args.arg2)
class_instance.run()
if __name__ == '__main__':
run_thread = Thread(target=run)
run_thread.daemon = True
run_thread.start()
time.sleep(3.0)
プログラムは期待どおりに動作します (3 秒間実行すると終了します)。しかし、前に述べたように、実行時間 (上記のコード スニペットの 3.0) は、ハード コードするのではなく、コマンド ラインから入力する必要があります (例: args.arg3 = 3.0)。どうやら私はtime.sleep(args.arg3)
直接置くことはできません。私の問題を解決できるアプローチがあるかどうか疑問に思っていましたか? デーモンスレッドを使わない回答も大歓迎です!ありがとう。
PS。引数解析コードを次のrun
ように関数の外に置くと:
def run(args):
class_instance = MultiThreadClass(args.arg1, args.arg2)
class_instance.run()
if __name__ == '__main__':
parser = create_arg_parser()
args = parser.parse_args()
run_thread = Thread(target=run(args))
run_thread.daemon = True
run_thread.start()
time.sleep(args.arg3)
プログラムはargs.arg3
数秒後に終了せず、その理由について混乱しています。また、これらすべての背後にある魔法を説明できる人がいれば、非常に感謝しています...どうもありがとう!