0
from itertools import product 

f = open('filename.txt', 'a') 

def worker(i, j): 
    print i,j 
    f.write("%s\t%s\n"%(i,j)) 
    return 

def main(): 
    a_list = ['1', '2', '3', '4', '5'] #5 item 
    b_list = ['6', '7', '8'] #3 item 
    # Total 5*3=15 combinations 

    from multiprocessing import Pool 
    pool = Pool(processes=4) 
    results = [pool.apply_async(worker, args=(i, j)) for i, j in product(a_list, b_list)] 
    output = [p.get() for p in results] 

main() 
f.close() 

이것은 실행하고 txt 파일에 결과를 저장하려고하는 코드입니다.하지만 인쇄가되지 않은 이유는 찾을 수 없습니다. 터미널에. 어떤 도움을 주시면 감사하겠습니다.파이썬 다중 처리를 사용하여 파일에 쓸 수 없습니다.

+0

이 리눅스 또는 윈도우인가 후 f.flush()을 추가? 스크립트가 종료 된 후 내용이 파일에 표시됩니까? – tdelaney

+0

자사의 리눅스 (우분투). 이 프로그램을 마치면 빈 파일이 생깁니다. – micheal

답변

3

f.write(...)

+2

고마워요! 그런 상황에 직면 한 적이 없기 때문에 제게 문제를 설명해주십시오. – micheal

+1

@michael 필자는 파일 객체가 작업자 프로세스에서 열리지 않기 때문에 작업자가 종료 할 때 파일 객체가 자동으로 플러시되거나 닫히지 않는다고 생각합니다. 이 때문에 쓰기 작업은 실제로 파일에 기록되지 않고 작업자 로컬 버퍼에 기록되며 프로세스가 종료되면 손실됩니다. – dano

관련 문제