파일이 100 줄입니다.Python Multiprocessing : Strange Behavior 단일 파일을 병렬로 읽는 중
[email protected]:test_parallel$ for i in {1..100}; do echo "trash" >> infile.txt; done
여러 프로세스가이 파일을 병렬로 읽길 원합니다. 선없이
#!/usr/bin/env python
import multiprocessing
def f(in_file, out_file):
for row in in_file:
print >> out_file, row.strip()
# out_file.seek(0) # interesting line
return
f1 = open('infile.txt')
f2 = open('infile.txt')
g1 = open('outfile1.txt', 'w')
g2 = open('outfile2.txt', 'w')
p1 = multiprocessing.Process(target=f, args=(f1, g1,))
p1.start()
p2 = multiprocessing.Process(target=f, args=(f2, g2,))
p2.start()
p1.join()
p2.join()
f1.close()
f2.close()
g1.close()
g2.close()
표시된 '재미'아무것도 출력 파일에 기록되지 않은 :
[email protected]:test_parallel$ wc -l *file*.txt
100 infile.txt
0 outfile1.txt
0 outfile2.txt
100 total
포함 작동 :
[email protected]:test_parallel$ wc -l *file*.txt
100 infile.txt
100 outfile1.txt
100 outfile2.txt
300 total
사람은 왜 seek()
을에 대한 설명을 제공시겠습니까 방법은 작동합니까? 데이터가 파일에 기록되는지 확인하기 위해 암시 적으로 '올바른'방법을 호출 할 수 있습니까? 나는 혼란스러워.
저는 파이썬 2.7을 사용하고 있습니다.
감사합니다.
폴
네가 맞아. 파일 이름을 전달하는 것은'seek'을 요구하지 않고 예상대로 작동합니다. 감사. – polarise