2
我正在使用「igraph」包和「R.utils」中的「evalWithTimeout」函數。我試圖做最大集團檢測,我知道它可以變得糟糕(因爲n(n^n)是可怕的節點數),所以我封裝在timeOut中,但它被忽略。調用C/Fortran例程時忽略evalWithTimeout?
最少的代碼來重現問題
library(igraph)
library(R.utils)
g<-erdos.renyi.game(1e6,1e7,type="gnm")
o<-evalWithTimeout(maximal.cliques(g),timeout=1)
這應該一秒鐘後停止。但事實並非如此。我想知道這是否由於使用底層的C/Fortran代碼(這是maximal.cliques所做的)。如果是這樣,我該如何解決這個問題?
但是讓C代碼中斷是非常微不足道的......你只需要在戰略位置調用'R_checkUserInterrupt()'。 –
不,這不是微不足道的,因爲您需要釋放內存,如果您調用的C函數調用其他C函數等,這並不重要。 –