| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Python: Разработка GUI > [PyQt4] Thread метод run и start |
| Автор: necrozyablo 11.5.2010, 17:58 | ||||
| Не могу понять как запускать несколько копий одной нити. через метод start() Пока не завершится первая нить вторая не стартует при этом исключений тоже ни каких не выдаёт, т.е. по сути если сделать Test.start() и сразу ещё раз Test.start() то запустится только одна нить и один раз. Если же вызывать через Test.run() то тогда нормально будет вызываться две параллельных нити. Вот у меня такой код:
Вообще здесь нажимеам на DebugButton срабатывает log_frame_deb в нём у меня запускаются Threds Test и Test они делают emit 'indexed(int)' в log_frame_deb3 В документации сказано
Т.е. по идеи как раз правильно что при работе Нити не запускается её копия? Но я видел примеры где Нити копиями стартуют или там есть какая то хитрость? Вот конкретно в том коде что я написал есть ещё одна особенность это self.mutex = QMutex() от него не холодно не жарко чисто с ним копии тредов шли в параллель без локанья переменной self.num и на выходе из 6 получалось 6*5*5/4/4 для int это 9 а если выполнять lock то должно получится 6*5/4*5/4 = 8 В этом плане у меня всё нормально заработало когда я ввёл self.lock.lockForWrite() Не могу понять как нужно было использовать QMutex() что с ним всё локалось и анлокалось. |
| Автор: pkad 12.5.2010, 15:58 | ||||
| Совет. Если вопрос по запуску нитей, напиши маленький тест, который посвящен только этому вопросу, а не вываливай кучу кода, 95% которого не имеет отношения к вопросу. Это облегчит жизнь и тебе и людям, которые будут разбираться в твоем коде. Насколько я вижу ты создаешь две нити:
Класс Test я вижу, а Test2 - нет. Ну ладно. Непонятно другое, почему создав две нити, ты пытаешься два раза запустить одну и ту же:
|