2016-09-15 5 views
1

Я просто пытаюсь писать параллельно в два файла с помощью потоковой передачи.Написание Параллельно в два файла python

def dmesg (i): 

    cmd = 'dmesg' 
    print cmd 
    (status, cmd_out) = commands.getstatusoutput(cmd) 
    fil = open('dmesg_logs', 'w') 
    fil.write(cmd_out) 
    fil.close() 

def dump (i): 

    cmd = 'lsmod' 
    print cmd 
    (status, cmd_out) = commands.getstatusoutput(cmd) 
    fil = open('logs', 'w') 
    fil.write(cmd_out) 
    fil.close() 
if __name__ == "__main__": 

    t1 = threading.Thread(target = dmesg, args=(0,)) 
    t1.start() 
    t2 = threading.Thread(target = dump, args=(0,)) 
    t2.start() 
    while True : 
     "My own code" 

Здесь моя проблема в том, что файл журналов не создан в потоке 2. Могу ли я понять, что делаю неправильно?

+0

Я заменил ваши команды на 'ls' и' date', и он отлично сработал. Можете ли вы попробовать это? Также обратите внимание, что вы используете 'команды', когда вы, вероятно, должны использовать' subprocess'. –

+0

@JohnZwinck Некоторые предлагают как для операций ввода-вывода, мы должны пойти для потоковой обработки и для операции с привязкой к процессору, нам нужно перейти на подпроцесс. –

+0

@AvinashRaj: Я никогда ничего не говорил о том, чтобы использовать или не использовать потоки. Я сказал, что не используйте 'команды'. Это устарело. –

ответ

0
cmd = ['dmesg'] 
with open ('dmesg_log.txt', 'w') as out1: 
    retun1 = subprocess.Popen(cmd, shell = True, stdout=out1) 

Нашли решение. Над кодом работает для меня.

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