2011-10-05 28 views
10

के लिए गणित कर्नेल रोक कैसे बना सकता हूं क्या गणना के दौरान गणित कर्नेल को रोकना संभव है? यहाँ एक उदाहरण है।मैं बाहरी फ़ाइल निर्माण

Module[{}, 
     Mathematica code.... 
     .......... 
     .......... 
     { 
     Calls an external program with some argument 
     Needs to wait for an external program to create a file (* How ?*) 
     } 
     Mathematica code using that file content.... 
     ........... 
     ........... 
     ] 

मैं एक Do[..] पाश समाधान है कि एक निर्दिष्ट निर्देशिका है कि क्या एक फ़ाइल या नहीं बनाया गया है में जाँच रहती है के साथ आ सकते हैं। एक बार जब यह फ़ाइल पाता है तो यह सामग्री को पढ़ता है और बाकी गणित कोड डेटा को संसाधित करता है।

क्या इस समस्या को हल करने का कोई शानदार तरीका है?

बीआर

+0

आप किस ओएस का उपयोग कर रहे हैं? –

+0

@ बेलिसियस विंडोज 7 लेकिन उम्मीद है कि यह लिनक्स या मैक पर भी किया जा सकता है .. – PlatoManiac

उत्तर

12

Pause[n] आज़माएं, कम से कम n सेकंड के लिए रोकें।

संपादित: यह समय की एक अनिश्चित राशि के लिए काम करने के लिए, आप बार-बार फाइल सिस्टम मतदान की जरूरत है। FileExistsQ करता है, और आप इसे

While[!FileExistsQ[ "filename" ], Pause[1]] 

जो ज्यादा से ज्यादा बर्बाद समय से एक दूसरे के लिए होता है, जबकि इंतजार कर की तरह उपयोग करेंगे।

आगे संपादित करें: आप फ़ाइल बैच फ़ाइल में फ़ाइल अस्तित्व सर्वेक्षण भी डाल सकते हैं जिससे आपके गणित सत्र को मुक्त किया जा सके। जैसे एक बैच फ़ाइल सी कहा जाता है बनाने: \ अस्थायी \ Test.bat युक्त

@echo off 
start /min apame_win64 input 
echo Loop commenced %TIME% 
:loop 
rem wait three seconds 
ping localhost -n 3 > nul 
if not exist c:\temp\alldone.txt goto loop 
rem wait while file is completely written out 
ping localhost -n 3 > nul 
rem then terminate the process 
taskkill /f /fi "imagename eq apame_win64.exe" 
exit 

और यह मेथेमेटिका से फोन: Run["start /min c:\\temp\\test.bat"]

इस बैच डेमो मान लिया गया apame_win64 पूरा करने के लिए एक फ़ाइल alldone.txt बाहर लिखेंगे।

+0

मुझे नहीं पता कि कितना समय रोकने के लिए .. – PlatoManiac

+7

आज़माएं: 'जबकि [! FileExistsQ ["filename"], रोकें [1]]' जो प्रतीक्षा करता है क्योंकि यह एक सेकंड में बर्बाद हो जाएगा। – rcollyer

+1

@ क्रिस, मैंने आपके कोड को आपके उत्तर में जोड़ा, जैसा कि मैंने सोचा था कि यह थोड़ा अनुचित था कि मेरी टिप्पणी आपके उत्तर से अधिक हो गई थी। – rcollyer

6

आप एक बाहरी प्रोग्राम कहते हैं, है एक बार फ़ाइल है कि कार्यक्रम से बाहर निकलें बनाई गई है? यदि ऐसा है, तो RunThrough वह है जिसे आप ढूंढ रहे हैं, RunThrough example देखें। वहां वे बाहरी कार्यक्रम के रूप में गणित के एक और उदाहरण का उपयोग करते हैं (जैसे गणित स्क्रिप्ट निष्पादित करना और इसके परिणाम की प्रतीक्षा करना)।

यदि फ़ाइल के निर्माण के बाद बाहरी प्रोग्राम चलाना जारी रहता है तो फ़ाइल जांचने के लिए आप एक अलग स्क्रिप्ट (शैल स्क्रिप्ट, पायथन, रूबी ...) का उपयोग कर सकते हैं।

संबंधित मुद्दे