2013-09-13 3 views
0

Я создал графический скребок (Qt и Python), который работает с несколькими потоками .. графический интерфейс, кажется, висит до тех пор, пока не появятся все нити. Я запускаю скребок с 200-300 нити .. после создания всех потоков GUI отвечает .. есть ли способ остановить приложение от не реагирования при создании потоков.GUI зависает до тех пор, пока не будут созданы все потоки

Я создал новую нить Python в основном потоке, а затем вызовите tempthread внизу код, который находится в классе QThread

def tempthread(self): 
     self.tempt = threading.Thread(target=self.spawn) 
     self.tempt.daemon=True 
     self.tempt.start() 

def spawn(self): 

     global noofthreads 
     for xd in range(0,noofthreads): 
      t = threading.Thread(target=self.startscrape) 
      t.daemon = True 
    t.start()  
      tarray.append(t) 
      t1 = threading.Thread(target=self.waitthreads) 
      t1.start() 
def waitthreads(self) 
     for t in tarray: 
      t.join() 

     self.message.emit("Program Execution Completed") 
+1

добавить processevents там каждые 20 нитей –

+0

Плохая идея создать много потоков. Реальных задач не требуется. Желательно создать пул потоков. В идеальном случае количество потоков должно быть равно числу ядер ЦП. –

ответ

0

Если вам нужно много потоков, лучше использовать пул потоков. Я нашел, что there is python binding for that, так что определенно вы должны попробовать это. Вот similar topic.

К сожалению, нет связывания python для QtConcurrent. Это хороший API, но он использует шаблоны, и он плохо документирован.

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