2011-10-26 12 views
7

मैं आर में setTimeLimit() मास्टर करने की कोशिश कर रहा हूं और मेरे अनुभव से कई संबंधित प्रश्न सामने आए हैं, इसलिए शायद मूल प्रश्न यह है कि यह वास्तव में कैसे काम करता है?सेटटाइमलिमिट आर में कैसे काम करता है?

    : (। मैं evalWithTimeout() R.utils से कम से रूप में अच्छी तरह देख कर दिया गया है, और यह मेरी प्रयोजनों थोड़ा बेहतर सूट सकता है लेकिन यह इस समारोह पर बनाया गया है)

    यहां मुख्य बातें मैं यह पता लगाने की कोशिश कर रहा हूँ कर रहे हैं

  1. यह विलुप्त समय की निगरानी कैसे करता है? अर्थात। ऐसा लगता है कि प्रवाह नियंत्रण में डाला गया है, तो यह कैसे करता है? "पृष्ठभूमि" प्रक्रियाओं को सक्षम करने में सक्षम होने के कारण, और रिपोर्टिंग स्थिति, चेकपॉइंटिंग आदि के लिए उपयोग किया जा सकता है।

  2. क्या मैं निर्धारित कर सकता हूं कि यह ट्रिगर होने तक कितना समय बनी हुई है? मुझे एहसास है कि मैं इसे लपेट सकता हूं और स्टोर कर सकता हूं, कहीं भी, & सीपीयू समय आवेदक के बिंदु पर खपत (यानी proc.time() का उत्पादन)। लेकिन, यह फ़ंक्शन पहले से ही इन्हें संग्रहीत कर रहा है और मैं जानना चाहता हूं कि कहां, या कम से कम शेष समय निर्धारित करने के लिए कैसे।

  3. यदि आर कंसोल निष्क्रिय है तो इसे कुछ उपयोगी करने के लिए किया जा सकता है? elapsed.time() और cpu.time() पर निगरानी रखने में सक्षम होना बहुत उपयोगी है। जब आर निष्क्रिय है, तो मैं निगरानी करने में सक्षम होना चाहता हूं, लेकिन ऐसा लगता है कि इसे सबमिट करने या पूरा करने के लिए एक कमांड की आवश्यकता है। इसके अलावा, सिर्फ एक त्रुटि आउटपुट करने से बाद की कार्रवाई ट्रिगर नहीं होती है। (शायद मुझे evalWithTimeout पर अधिक ध्यान देना होगा।)

  4. सहायता जानकारी कहती है कि यह सी या फोरट्रान के साथ लागू हो सकती है, लेकिन उदाहरण नहीं देती है। यह कैसे किया जाना चाहिए इस पर कोई सुझाव?

+1

आप बहु प्रोग्रामिंग के साथ कितना अनुभव है? जैसा कि मुझे याद है, यह बस एक कॉलबैक तंत्र में हुक करता है, और इस प्रकार प्रोसेसिंग चक्रों के हर जोड़े को जागृत हो जाता है। इसका उपयोग करने के लिए उदाहरण हैं उदाहरण उदा। वर्तमान समय के साथ अपने आर टर्मिनल सत्र के संकेत को अद्यतन करने के लिए --- जो एक प्रति उदाहरण है लेकिन एक उपयोगी उदाहरण है। –

+0

मैं बहुप्रचारित प्रोग्रामिंग के साथ काम कर सकता हूं। मुझे लगता है कि यह एक कॉलबैक था, लेकिन उसे पिन करने की कोशिश नहीं की थी। दिलचस्प बात यह है कि यह 'GetTaskCallbackNames() 'या' taskCallbackManager() 'के अंतर्गत दिखाई नहीं दे रहा है। – Iterator

उत्तर

3

कि setTimeLimit एक सी समारोह कॉल के दौरान काम नहीं करता है दिखाने के लिए:

rfunction <- function(){ 
    repeat{ 
     x <- rnorm(100); 
    } 
} 

cfunction <- function(){ 
    x <- eigen(matrix(rnorm(1e6), 1e3)); 
} 

setTimeLimit(3); 
system.time(try(rfunction(), silent=TRUE)) 
system.time(try(cfunction(), silent=TRUE)) 
संबंधित मुद्दे