मैं पाइथन उपप्रोसेसेस का एक विशेष सेट जितना संभव हो उतना कम प्रभाव वाला होना चाहता हूं। मैं सीपीयू खपत को सीमित करने में मदद के लिए पहले से ही nice का उपयोग कर रहा हूं। लेकिन आदर्श I/O भी सीमित होगा। (यदि संदिग्ध है, तो कृपया मुझे हास्य दें और मान लें कि ऐसा करने में मूल्य है; इससे कोई फर्क नहीं पड़ता कि वे कितने समय तक दौड़ते हैं, उनमें से बहुत से हो सकते हैं, और उच्च प्राथमिकता वाली सामग्री (आमतौर पर) चल रही है एक ही मशीन, आदि)पायथन प्रक्रियाओं (संभवतः आयनिस का उपयोग करके) I/O खपत को कैसे सीमित करें?
एक संभावना ionice
प्रतीत होता है। ionice
(Google ने कुछ भी चालू नहीं किया है) का आह्वान करने के लिए कोई मौजूदा पायथन पैकेज हैं? ionice
कमांड को चलाने के लिए कोड लिखना मुश्किल नहीं होगा; लेकिन मैं लेखन कोड से बचना पसंद करूंगा कि किसी और ने लिखा है/परीक्षण किया है; कभी-कभी सूक्ष्म किनारे के मामले होते हैं, और, क्या आई/ओ खपत को सीमित करने का एक बेहतर तरीका है?
man page for ionice पता चलता है कि ionice
मूल्य nice
मूल्य से प्रभावित हो सकते हैं, लेकिन यह अजगर 2.6 स्क्रिप्ट का खंडन करने के लिए, यहां तक कि बच्चे प्रक्रियाओं जहां nice
मूल्य विरासत में मिलती है के लिए प्रकट होता है चल रहा है:
#!/usr/bin/env python
import os
import multiprocessing
def print_ionice(name):
print '*** ', name, ' ***'
os.system("echo -n 'nice: '; nice")
os.system("echo -n 'ionice: '; ionice -p%d" % os.getpid())
for niced in (None, 19):
if niced: os.nice(niced)
print '**** niced to: ', niced, ' ****'
print_ionice('parent')
subproc = multiprocessing.Process(target=print_ionice, args=['child'])
subproc.start()
subproc.join()
है कौन सा निम्नलिखित उत्पादन:
$ uname -as Linux x.fake.org 2.6.27-11-server #1 SMP Thu Jan 29 20:13:12 UTC 2009 x86_64 GNU/Linux $ ./foo.py **** niced to: None **** *** parent *** nice: 0 ionice: none: prio 4 *** child *** nice: 0 ionice: none: prio 4 **** niced to: 19 **** *** parent *** nice: 19 ionice: none: prio 4 *** child *** nice: 19 ionice: none: prio 4
कूल फिक्स, इच्छा है कि यह ओएसएक्स के लिए उपलब्ध था। –
हाँ ... दुर्भाग्य से ओएसएक्स इसे मूल रूप से बेनकाब नहीं करता है। –
सुनिश्चित करें कि आपके ब्लॉक डिवाइस में सीएफक्यू शेड्यूलर है। अन्यथा यह काम नहीं करेगा। – Zorg