मेरे पास कई धागे हैं जिनमें से प्रत्येक कार्यशील निर्देशिका बदल रही है और कभी-कभी इन निर्देशिकाओं में विशिष्ट कार्य निर्देशिकाओं, प्रतिलिपि/फ़ाइलों को स्थानांतरित करने में नए बना रही है। ऐसा सोचें .:पाइथन में थ्रेड-विशिष्ट os.chdir और mkdir क्या है?
def thread1:
while True:
os.chdir('dir')
os.mkdir('newdir')
os.system('mv *.png newdir/')
do something
def thread2:
while True:
os.chdir('another-dir')
os.mkdir('another-newdir')
os.system('mv *.png another-newdir/')
do something
मैंने पढ़ा है कि chdir, mkdir फ़ंक्शन थ्रेड के लिए विशिष्ट नहीं हैं बल्कि वैश्विक हैं। इसे पूरा करने का एक तरीका क्या है? मैं पूर्ण पथ का उपयोग करने की कोशिश कर सकता हूं लेकिन क्या यह सबसे अच्छा समाधान है?
इसे हल करने का एक त्वरित तरीका कभी भी 'os.chdir()' 'को कॉल नहीं करना है। आपके मामले में यह 'os.mkdir ('dir/newdir') बन जाएगा; ओएससिस्टम ('सीडी डीआईआर एंड एमवी * .पीएनजी न्यूडीर /') ''। ध्यान दें कि 'cd'' शेल कमांड के अंदर है। –
फिर भी एक और समाधान - लिनक्स पर - 'unshare (CLONE_FS)' फ़ंक्शन का उपयोग करना है, लेकिन निश्चित रूप से सी को लिखना या ctypes/cffi का उपयोग करना आवश्यक है। –