Как использовать несколько потоков

У меня есть этот код:

import thread def print_out(m1, m2): print m1 print m2 print "\n" for num in range(0, 10): thread.start_new_thread(print_out, ('a', 'b')) 

Я хочу создать 10 потоков, каждый поток выполняет функцию print_out , но я потерпел неудачу. Ошибки заключаются в следующем:

 Unhandled exception in thread started by sys.excepthook is missing lost sys.stderr Unhandled exception in thread started by sys.excepthook is missing lost sys.stderr Unhandled exception in thread started by sys.excepthook is missing lost sys.stderr Unhandled exception in thread started by sys.excepthook is missing lost sys.stderr Unhandled exception in thread started by sys.excepthook is missing lost sys.stderr Unhandled exception in thread started by sys.excepthook is missing lost sys.stderr Unhandled exception in thread started by sys.excepthook is missing lost sys.stderr Unhandled exception in thread started by sys.excepthook is missing lost sys.stderr Unhandled exception in thread started by sys.excepthook is missing lost sys.stderr Unhandled exception in thread started by sys.excepthook is missing lost sys.stderr 

3 Solutions collect form web for “Как использовать несколько потоков”

Прежде всего, вы должны использовать модуль threading более высокого уровня и, в частности, класс Thread . Модуль thread не то, что вам нужно.

По мере расширения этого кода вы, скорее всего, также захотите дождаться завершения потоков. Ниже приведена демонстрация того, как использовать метод join для достижения этого:

 import threading class print_out(threading.Thread): def __init__ (self, m1, m2): threading.Thread.__init__(self) self.m1 = m1 self.m2 = m2 def run(self): print self.m1 print self.m2 print "\n" threads = [] for num in range(0, 10): thread = print_out('a', 'b') thread.start() threads.append(thread) for thread in threads: thread.join() 

Вы должны позволить основной нити оставаться в живых на некоторое время. Если основной поток затухает, так будут и все остальные потоки, и, следовательно, вы не увидите никакого выхода. Попробуйте добавить time.sleep(0.1) в конце кода, а затем вы увидите результат.

После этого вы можете взглянуть на thread.join() чтобы получить больше информации об этом.

В другом подходе используется класс потоковой передачи.

  instance[num]=threading.Thread(target=print_out, args=('a', 'b')) instance[num].start() 
  • Остановка потока python с бесконечной петлей
  • Реализация барьера в Python2.7
  • Пояснения некоторые код Python
  • Производные классы, получающие сигналы в неправильной цепочке в PySide (Qt / PyQt)
  • PySide передает сигналы из QThread в слот в другом QThread
  • Как использовать потоки в Python?
  • Python: как многопоточная функция, возвращающая несколько значений
  • В потоке Python, как я могу отслеживать завершение потока?
  •  
    Interesting Posts for Van-Lav

    Как сортировать сводную таблицу в Pandas

    конвертировать необработанный двоичный 8-разрядный неподписанный файл в 16 бит без знака с помощью библиотеки изображений python

    Как избавиться от ошибки глубины рекурсии или лучше решить эту проблему?

    Ошибка EOF Python raw_input ()

    Установка размера холста для печати в Matplotlib

    Не удалось импортировать sendgrid в приложение GAE

    Как я могу fixTypeError: объект 'str' не может быть вызван?

    ValueError: недостаточно значений для распаковки (ожидается 11, получено 1)

    Получите количество результатов из функции запроса raw () Django

    перевернутый перенос изображения с клиента на сервер дает неверную ошибку формата

    Использование моделей и форм за пределами Django?

    Можно ли использовать pyodbc для чтения таблиц Paradox, открытых в Paradox gui?

    объединение логарифма и линейной шкалы в matplotlib

    Создание механизма вывода в Python

    Настройки настройки прядильной пряжи

    Python - лучший язык программирования в мире.