サブプロセス呼び出しを使用して Python 関数を呼び出そうとしています。サブプロセスの例をたくさん見てきましたが、別の python 関数を呼び出すものは見当たりませんでした。それができるかどうかはわかりません。
私の関数fakeFxn
は、数秒から数時間かかる処理を行います。特定の時間、たとえば 1 時間以上かかるものはスキップしたい。この関数は、収集する必要のある値も返します。
def fakeFxn(val):
if (val== "terminate"):
for i in range(10):
z = "t"
return(z)
else:
for i in range(100000000): #Instead of infinite loop, here I am doing some big computation
y = "nt"
return(y)
import subprocess
elapsedTime = 0
p = subprocess.Popen(retval = fakeFxn("terminate"))
rc = p.poll() #returncode
while (rc == None):
sleep(5)
elapsedTime = elapsedTime + 5
if(elapsedTime <10):
rc = p.poll()
continue
else:
rc = "timeout"
p.kill()
break
これは良い方法ですか?または、同じことを行う別の方法はありますか? ここで関連する質問をしました:コマンドの実行を突然停止し、次のコマンドに進みます
私の実際の機能は、この投稿の「rpart」機能です。