Saya memanggil skrip Shell (.sh) dari kode python saya dan saya ingin memberi tahu Python untuk menunggu skrip berakhir sebelum melanjutkan ke kode lainnya. Sebagai catatan, skrip memanggil cluster HPC beberapa perhitungan yang memakan waktu sekitar 40-50 menit. Saya mungkin bisa melakukan sleep() dan memaksa python untuk menunggu 40-50 menit ini, tetapi pertama-tama saya tidak selalu tahu jumlah waktu yang harus menunggu, dan kedua saya berharap cara yang lebih efisien untuk melakukan ini. Jadi, skrip dipanggil dengan menggunakan os.system("bsub < test.sh").

Apakah ada cara untuk benar-benar memberi tahu python menunggu hingga skrip selesai dan kemudian melanjutkan dengan sisa kode? Terima kasih sebelumnya

0
user3474218 11 Mei 2021, 21:40

1 menjawab

Jawaban Terbaik

Saya pikir @Barmar mengidentifikasi masalah dalam beberapa komentar

Saat Anda menjalankan bsub, pekerjaan akan dikirimkan dan segera dikembalikan, bukan menunggu penyelesaian.

Anda juga harus

  • tambahkan argumen -K ke bsub agar menunggu ref
  • lewati bsub dan jalankan skrip secara langsung
  • tulis beberapa penanda independen di akhir skrip Anda (mungkin file) dan minta skrip Python memeriksanya dalam satu lingkaran (mungkin setiap 1-5 detik sehingga tidak membanjiri sumber daya itu)
  • tulis ulang skrip dengan Python murni dan langsung masukkan ke dalam logika Anda
6
ti7 11 Mei 2021, 18:55