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-файле, но я не могу выяснить, почему это не написано, хотя его печать в терминале. любая помощь будет оценена по достоинству.Невозможно записать в файл с использованием многопроцессорной обработки Python

+0

Является ли это Linux или Windows? Отображается ли содержимое в файле после завершения сценария? – tdelaney

+0

его linux (ubuntu). После завершения этой программы я получаю пустой файл. – micheal

ответ

3

добавить f.flush() после f.write(...) заявления

+2

Спасибо! Не могли бы вы объяснить мне эту проблему, потому что я никогда не сталкивался с такой ситуацией. – micheal

+1

@michael Я считаю, что причина в том, что, поскольку файловый объект не открывается в вашем рабочем процессе, он автоматически не очищается/закрывается, когда рабочий выходит из него. Из-за этого ваша запись никогда не записывается в файл, она просто записывается в буфер, локальный для рабочего, который затем теряется, когда процесс завершается. – dano

Смежные вопросы