2013-04-13 6 views
14

sync man page का कहना है:क्या पाइथन सिंक हो गया है?

सिंक() सभी को मेटाडाटा और डेटा फ़ाइल के लिए संशोधन अंतर्निहित फाइल सिस्टम के लिए लिखा जा बफ़र का कारण बनता है।

करता अजगर यह करने के लिए एक फोन है?

पीएस fsync नहीं, मैं इसे देखता हूं।

उत्तर

15

पायथन 3.3 में os.sync है, the docs देखें। source पुष्टि करता है कि यह वही बात है।

पायथन 2 के लिए आपको सिस्टम में external call बनाना पड़ सकता है।

12

के रूप में कहा, अजगर 3.3 कॉल है - के बाद से यह एक सरल सिस्टम कॉल है, की आवश्यकता होती है कोई डेटा आगे और पीछे पारित होने के लिए, पायथन 2.x पर, आप कॉल करने के लिए ctypes का उपयोग कर सकते हैं:

>>> import ctypes 
>>> libc = ctypes.CDLL("libc.so.6") 
>>> libc.sync() 
0 
+1

वाह, फैंसी। :) मैं घबराऊंगा कि libc.so.6 हमेशा मौजूद नहीं हो सकता है (हालांकि मैं यूनिक्स पर हूं), इसलिए संभवतः उपप्रोसेसर या 'सिंक' मेरे लिए रास्ता है। – dfrankow

+0

"या \' सिंक \ '.."। बिना पूर्वावलोकन के डार स्वरूपण – dfrankow

6

twoanswers का मेल, मैं अपने मॉड्यूल के शीर्ष पर निम्नलिखित का उपयोग करें:

if hasattr(os, 'sync'): 
    sync = os.sync 
else: 
    import ctypes 
    libc = ctypes.CDLL("libc.so.6") 
    def sync(): 
     libc.sync() 
+2

'sync = libc.sync' के बजाय' def sync() 'का उपयोग करने के लिए कोई विशेष कारण? – pepoluan

+1

आह वास्तव में है, दुर्घटना से पैरामीटर के साथ नहीं कहा जा सकता है;) –

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