विंडोज़ पर मल्टीप्रोसेसिंग का उपयोग करके ऐसा लगता है कि किसी भी खुले फ़ाइल हैंडल स्पॉन्डेड प्रक्रियाओं द्वारा विरासत में प्राप्त होते हैं। यह उन्हें लॉक करने का अप्रिय दुष्प्रभाव है।मल्टीप्रोसेसिंग lib में फ़ाइल हैंडल विरासत को रोकना
मैं में दिलचस्पी रखता हूँ या तो:
1) विरासत
2) पैदा की प्रक्रिया
निम्नलिखित कोड है जिस पर OSX ठीक काम करता है पर विचार करें से फ़ाइल को रिहा करने का एक तरीका है, लेकिन दुर्घटनाओं खिड़कियों पर रोकथाम os.rename पर
from multiprocessing import Process
import os
kFileA = "a.txt"
kFileB = "b.txt"
def emptyProcess():
while 1:
pass
def main():
# Open a file and write a message
testFile = open(kFileA, 'a')
testFile.write("Message One\n")
# Spawn a process
p = Process(target=emptyProcess)
p.start()
# Close the file
testFile.close()
# This will crash
# WindowsError: [Error 32] The process cannot access the file
# because it is being used by another process
os.rename(kFileA, kFileB)
testFile = open(kFileA, 'a')
testFile.write("Message Two\n")
testFile.close()
p.terminate()
if __name__ == "__main__":
main()
ओपन(), ओएसओपेन() के साथ बनाए गए किसी चीज़ से फ़ाइल संभाल कैसे प्राप्त करता है? – 14256424