Sử dụng đa xử lý trên cửa sổ có vẻ như bất kỳ trình xử lý tệp đang mở nào đều được thừa kế bởi các quy trình được sinh ra. Điều này có tác dụng phụ khó chịu của việc khóa chúng.Ngăn chặn tệp xử lý kế thừa trong đa xử lý lib
Tôi quan tâm đến một trong hai:
1) Ngăn cản việc thừa kế
2) Một cách để giải phóng các tập tin từ quá trình sinh ra
Xét đoạn mã sau đó hoạt động tốt trên OSX, nhưng treo trên cửa sổ tại 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()
Làm cách nào để có được xử lý tệp từ nội dung được tạo bằng open(), không phải là os.open()? – 14256424