Python多处理:在P中读取单个文件的奇怪行为

2024-09-30 14:26:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有100行文本的文件。在

paulk@node013:test_parallel$ for i in {1..100}; do echo "trash" >> infile.txt; done

我需要几个进程并行读取这个文件。在

^{pr2}$

如果没有标记为“有趣”的行,则不会向输出文件写入任何内容:

paulk@node013:test_parallel$ wc -l *file*.txt
100 infile.txt
  0 outfile1.txt
  0 outfile2.txt
100 total

包括它的工作:

paulk@node013:test_parallel$ wc -l *file*.txt
 100 infile.txt
 100 outfile1.txt
 100 outfile2.txt
 300 total

有人能解释一下seek()方法的作用吗?它是否会隐式调用“right”方法以确保数据写入文件?我很困惑。在

我使用的是python2.7。在

谢谢。在

保罗


Tags: 文件方法test文本txtforparallelinfile
1条回答
网友
1楼 · 发布于 2024-09-30 14:26:33

您正在将打开的文件对象传递给另一个进程。我不喜欢这个,看起来不太干净。我希望将文件名传递给子进程,而子进程将打开文件、写入文件并关闭它。这是干净的。在

我想当子进程写入file对象时,它会进行一些内部缓存。显然,子进程不会关闭文件,并且在不刷新缓存的情况下结束。out_file.seek(0)语句具有刷新缓存的副作用。您可以使用out_file.flush()实现相同的效果。在

但实际上,只需将文件名传递给子进程。否则,无论您实现了什么,操作系统和Python版本之间都会有所不同。在

相关问题 更多 >