2015-06-23 2 views
0

Я хочу написать идентификатор процесса в файл при запуске моей программы, поэтому я написал этот код, но этот код записывает pid в файл всякий раз, когда останавливает процесс.как писать в файл в multiprocess в python

from multiprocessing import Process 
from os import getpid 


def f(): 
    file = open('udp.pid', 'w') 
    file.write(str(getpid())) 
    file.close() 
    while True: 
     # a socket infinity loop 
     pass 

if __name__ == '__main__': 
    p = Process(target=f,) 
    p.start() 

Как написать pid в файл в многопроцессорном режиме?

UPDATE:

Я использую Python 3.4 на окнах 8.1

ответ

1

Я думаю, что с помощью многопроцессорных или нет, не имеет значения. Это просто писать!

открытым (имя [режим [, буферные]])

в https://docs.python.org/2/library/functions.html

The optional buffering argument specifies the file’s desired buffer size: 0 means unbuffered, 1 means line buffered, any other positive value means use a buffer of (approximately) that size (in bytes).

изменить код

file = open('udp.pid', 'w') 

в

file = open('udp.pid', 'wb', 0) 
+0

Я протестировал его и получил эту ошибку «ValueError: не может иметь небуферизованный ввод/вывод текста» –

+0

ничего не произошло! Я использую python-3.4, меняю 'w' на 'wb' и "file.write (str (getpid())) "to" file.write (str (getpid()). encode ('utf-8)) ", но ничего не изменилось, программа пишет pid в файл после завершения процесса! –

+0

Я тестировал код на OS X. Он работает! Событие, на котором ваш код написал pid немедленно, что вы ожидали. – han058

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