LINUX.ORG.RU

Python потоки и чтение с очень медленного диска


0

0

В питоне читаю с очень медленного диска (он несколько неисправен и по
этому скорость чтения с него где-то 10-20 кбайт/с)

Для чтения создаю отдельный тред
Пример кода:
buf = ""

def thread_run( ):
try:
fd = open( dev, "r" )
buff = fd.read(16)
fd.close()
finally:
return


thread1 = threading.Thread( target = thread_run )
thread1.setDaemon( 1 )
print "Thread start"
thread1.start()
print "Thread join"
thread1.join( 1.0 )
print "After join"

Так вот, проблемма в том, что примерно один из 10 циклов чтения зависает:

на консоль сыпется:
Thread start
Thread join
After join
...
Thread start
Thread join

И на этом виснет, при этом поток создаётся и находится в Dl+ состоянии (судя по topу)

Может найдется добрый человек, знающий как победить эту напасть
ПО: ядро 2.6.22.5 Python 2.4


Блин, форматирование. Пример кода:

buf = "" 
 
def thread_run( ): 
   try: 
      fd = open( dev, "r" ) 
      buf = fd.read(16) 
      fd.close() 
   finally: 
      return 
 
 
thread1 = threading.Thread( target = thread_run ) 
thread1.setDaemon( 1 ) 
print "Thread start" 
thread1.start() 
print "Thread join" 
thread1.join( 1.0 ) 
print "After join" 

ZDE
() автор топика
Ответ на: комментарий от ZDE

возможно проблема не в питоне, а диске. скорее всего всё дело блокирует операция чтения. самый простой вариант узнать так это или нет - поставить принты перед read и после.

asgard
()
Ответ на: комментарий от asgard

Да я знаю, что проблема в диске. В том то и дело, что мне надо чтобы процесс не зависал на read. Открытие диска в неблокирующем режиме не помогает

ZDE
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.