Python 无法从进程写入文件,但能够使用多处理模块访问文件对象
我使用了多处理模块并创建了一个进程,在这个进程中,我想要访问一个文件,并且需要在其中写入一些日志。 我有特定的依赖关系,这就是为什么我在worker函数外声明file,从worked函数我可以打印和访问file对象,但不能向其写入任何内容 你能建议我怎么写那个文件吗Python 无法从进程写入文件,但能够使用多处理模块访问文件对象,python,python-multiprocessing,Python,Python Multiprocessing,我使用了多处理模块并创建了一个进程,在这个进程中,我想要访问一个文件,并且需要在其中写入一些日志。 我有特定的依赖关系,这就是为什么我在worker函数外声明file,从worked函数我可以打印和访问file对象,但不能向其写入任何内容 你能建议我怎么写那个文件吗 import multiprocessing import time file1 = open("files.txt",'w+') def worker(): print "iam called" print f
import multiprocessing
import time
file1 = open("files.txt",'w+')
def worker():
print "iam called"
print file1
file1.write("hello 123")
jobs = []
p = multiprocessing.Process(target=worker)
jobs.append(p)
p.start()
time.sleep(10)
p.terminate()
输出:
iam called
<open file 'files.txt', mode 'w+' at 0x7f5ee8bd7f60>
iam已调用
一旦将一些数据放入文件中,您需要关闭该文件。做:
file1.write("hello 123")
file1.close()
最佳做法是使用
with
打开文件,这将在您处理完文件后显式关闭文件
with open('files.txt', 'w+') as file1:
#Perform actions here
现在还不清楚你到底想在这里实现什么。 根据您的代码,file1将是一个FileStream对象。您正在进程的多个地址空间中共享此单一流。这是第一个缺陷 当函数尝试执行多处理函数时,文件流不会共享。此外,对file1 FileStream的引用不会被破坏,因此您可以访问该文件,但不能写入该文件。 另外,为什么要以“w+”模式打开?您是否有明确的理由截断该文件 要解决此问题,应在执行衍生进程的函数中打开文件流:
def worker():
print "iam called"
with open(files.txt",'w+'):
file1.write("hello 123")