У меня есть два потока (производитель и потребитель), и я делюсь данными с Queue
. Проблема в том, что, когда я решительно прерываю производителя, потребитель иногда блокирует.Python threading deadlock
В документах я прочитал, что отмена потока с очередью может привести к повреждению очереди и вызвать тупик. Я не получаю никаких блокировок явно, но чтение источника Queue.py говорит, что put
и get
делают это.
Возможно, кто-нибудь знает, что это может быть так, что когда я прерываю нить, это может быть в середине get
/put
, то есть с помощью блокировки, а затем не отпускать его? Что я могу сделать с этим? Иногда мне нужно преждевременно прекратить работу продюсера. Используют ли процессы, а не потоки, какие-либо различия?
Как вы прервать поток? Ctrl + C? –
Нравится это: http://stackoverflow.com/questions/323972/is-there-any-way-to-kill-a-thread-in-python –
можете ли вы опубликовать код, чтобы мы могли знать, что происходит? – betabandido