2013-07-06 4 views
1

Я пишу задний конец онлайн-судьи (проверка кода) в python 2.7, который принимает представления из базы данных (с использованием mysql), оценивает представление и записывает результат обратно в базу данных. Я запускаю несколько процессов и каждый процесс запускает Несколько threads.For время Я печатаю статус оценок и другие вещи непосредственно в STDOUT. У меня нет даже поставить блокировку при печати (что громоздко, потому что есть много заявлений на печать). Хотя я знаю, что в этом состоянии необходимо блокирование. Но у моего оценщика был только один процесс, который имел только один поток. поставил блокировку в это время и перенаправлял STDOUT и STDERR в файл из командной строки. Но теперь дело другое. Также такой журнал трудно будет прочитать и найти ошибку и другие вещи, если мой оценщик потерпит крах. Есть ли какой-то аккуратный способ регистрация в этом случае ??Регистрация в многопроцессорной и многопоточной программе python?

ответ

2

Вы можете использовать переменную как счетчик, который является счетчиком процессов или потоков. Таким образом, вы можете проверить этот счетчик, и вы можете использовать блокировку, если счетчик больше 1.

+1

Я думаю, что это не сработает Я не могу позволить потокам/процессам одновременно обращаться к этому счетчику переменных, я бы, в свою очередь, должен был установить на него блокировку . Аналогичная проблема снова. –

+0

Yeap вы правы. Вы должны использовать блокировку. Я думаю, вы не избегаете использования для блокировки. Мне интересно, как его решить. – hinzir

+0

да! думаю, спасибо за ответ :) –

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