저는 slurm 작업을위한 스케줄러 스크립트를 파이썬으로 작성하려고합니다.부모 프로세스가 종료 될 때 계속 될 파이썬에서 스레드를 시작하는 방법은 무엇입니까?
기본적으로 함수에 포함 된 스크립트가 있습니다. job_array_scheduler()
이라고 부르 자. 여기에는 time.sleep()
루프가 포함되어 있습니다. 이는 하루 이상 지속될 것으로 예상됩니다. 나는 파이썬 안에서 별도의 스레드로이 함수를 시작할 수 있기를 바란다. 그래서 나는 세션을 종료 할 수 있으며이 것은 계속 실행될 것이다.
import threading
scheduler_thread = threading.Thread(target=job_array_scheduler, args=args, daemon=True)
scheduler_thread.start()
을하지만 파이썬 세션을 종료 할 때 (다만 exit
로 즉) 종료 :
파이썬 세션을 종료하거나 사용자를 로그 오프 할 수 있도록 위의 스레드를 계속 유지하려면 어떻게해야합니까? 나는 위의 주위에 포장 다른 스크립트를 쓰고 생각할 수있는, 그래서 python wrapper_script.py &
같은 일을 쉘에서 백그라운드에서 실행할 수 있지만, 내가해야 할 것 같은 것을 방지하기 위해 선호
유일한 방법 내가하고 싶은 일에 대해 별도의 외부 스크립트를 작성하십시오.
스레드 대신 멀티 프로세싱을 사용하십시오 (파이썬에서는 GIL 덕분에 예상대로 작동하지 않습니다) – GPhilo