当我向一个已经通过将其传递给使用多进程实现的工作函数而共享的打开文件写入时,文件内容没有正确地被写入。相反,'^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^'被写入到文件中。
为什么会发生这种情况?你不能让许多多处理单元写入同一个文件吗?你需要使用锁吗?队列?我是否没有正确或有效地使用多进程?
我觉得一些示例代码可能会有所帮助,但请只将其作为我打开文件并通过多进程传递打开文件到另一个进行写入的函数的参考。
多进程文件:
为什么会发生这种情况?你不能让许多多处理单元写入同一个文件吗?你需要使用锁吗?队列?我是否没有正确或有效地使用多进程?
我觉得一些示例代码可能会有所帮助,但请只将其作为我打开文件并通过多进程传递打开文件到另一个进行写入的函数的参考。
多进程文件:
import multiprocessing as mp
class PrepWorker():
def worker(self, open_file):
for i in range(1,1000000):
data = GetDataAboutI() # This function would be in a separate file
open_file.write(data)
open_file.flush()
return
if __name__ == '__main__':
open_file = open('/data/test.csv', 'w+')
for i in range(4):
p = mp.Process(target=PrepWorker().worker, args=(open_file,))
jobs.append(p)
p.start()
for j in jobs:
j.join()
print '{0}.exitcode = {1}' .format(j.name, j.exitcode)
open_file.close()
^@
”是从哪里来的?我在代码中找不到类似的东西。这些是文字还是控制符号的表示? - ivan_pozdeev