亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SLURM 批處理腳本不執行 Python 腳本,不返回錯誤消息并且不停止運行

SLURM 批處理腳本不執行 Python 腳本,不返回錯誤消息并且不停止運行

青春有我 2023-05-23 14:59:31
在 SLURM 集群中,我提交了一個調用 python 腳本的 shell 腳本(這兩個腳本都可以在下面找到。當 shell 腳本執行時,它會到達調用 python 腳本的位置,但隨后什么也沒有發生:沒有輸出,沒有錯誤消息SLURM 作業繼續運行。我假設 python 腳本的全部內容都不相關(但我還是將其包括在內以完成)。出于調試目的,我print("script started")在最開始插入了該行以查看它是否運行但沒有運行。我在輸出中看到的最后一件事是moved to directory.我嘗試在此之前調用test.py包含的腳本print("test")并且它正常執行。python 腳本無法啟動的原因可能是什么,我該如何解決?編輯:由于用戶 jakub 建議更改print("script started")為print("script started", flush=True)成功打印。包括更多這樣的語句表明腳本實際上運行得很好,只是沒有輸出任何東西。在不斷執行的 for 循環中包含相同的語句也會使print()之前丟失的所有語句都被打印出來。那么問題就變成了:為什么print()這里的語句需要在這個腳本中有flush=True,而在其他腳本中不需要呢?
查看完整描述

1 回答

?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

Python 默認緩沖 stdin、stdout 和 stderr。print()默認情況下寫入stdout,因此您將看到這種緩沖行為。

Python 以緩沖模式打開 stdin、-out 和 -error 流;它將讀取或寫入更大的塊,將數據保存在內存中,直到達到閾值。

您可以通過傳遞flush=True給強行刷新此緩沖區printprint如果連續有多個語句,則只需flush=True在最后一個語句中使用。


查看完整回答
反對 回復 2023-05-23
  • 1 回答
  • 0 關注
  • 367 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號