मैं किसी अन्य प्रोग्राम को कॉल करने के लिए सबप्रोसेस का उपयोग कर रहा हूं और इसके रिटर्न वैल्यू को एक चर में सहेज रहा हूं। इस प्रक्रिया को एक पाश में दोहराया है, और कुछ ही हजारों बार के बाद कार्यक्रम निम्नलिखित त्रुटि के साथ दुर्घटनाग्रस्त हो गया:पायथन सबप्रोसेस: बहुत अधिक खुली फ़ाइलें
Traceback (most recent call last):
File "./extract_pcgls.py", line 96, in <module>
SelfE.append(CalSelfEnergy(i))
File "./extract_pcgls.py", line 59, in CalSelfEnergy
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
File "/usr/lib/python3.2/subprocess.py", line 745, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.2/subprocess.py", line 1166, in _execute_child
errpipe_read, errpipe_write = _create_pipe()
OSError: [Errno 24] Too many open files
किसी भी विचार इस समस्या को हल करने के लिए कैसे बहुत सराहना कर रहा है!
कोड टिप्पणियों से आपूर्ति:
cmd = "enerCHARMM.pl -parram=x,xtop=topology_modified.rtf,xpar=lipid27_modified.par,nobuildall -out vdwaals {0}".format(cmtup[1])
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
out, err = p.communicate()
संचार() पाइप बंद कर देता है, इसलिए यह आपकी समस्या नहीं है। अंत में, Popen() केवल वह आदेश है जो आपके द्वारा पाइप से बाहर होने पर चलने के लिए होता है ... समस्या आपके कोड में कहीं और हो सकती है और अन्य फाइलें खुली रहती हैं। मैंने देखा "SelfE.append" ... क्या आप अन्य फाइलें खोल रहे हैं और उन्हें एक सूची में रखते हैं? – tdelaney