|
Какой рейтинг вас больше интересует?
|
Программирование » Многопоточность в Python2013-05-27 18:22:05 (читать в оригинале)Модуль thread позволяет создавать несколько потоков и управлять ими. Предоставляет средства низкого уровня для работы с несколькими потоками, совместно использующими глобальные данные. Для синхронизации модуль предо- ставляет простые средства блокировки. # -*- coding: utf-8 -*- # http://docs.python.org/library/thread.html import thread import urllib import time # Время начала работы программы t1 = time.time() # Список сайтов для чтения list_url = ('http://www.kremlin.ru', 'http://www.gosuslugi.ru', 'http://www.python.org', 'http://www.djangoproject.org', 'http://www.yandex.ru', 'http://www.google.ru', ) # Создадим функцию, которая будет выполняться одновременно разными потоками def read_site(number, url, lock): t1 = time.time() r = urllib.urlopen(url) t2 = time.time() print "#%s, site: %s, time: %.2f" % (number, url, (t2-t1)) # Освобождаем объект lock.release() # Список объектов блокировки потоков lock_list = [] for number, url in enumerate(list_url): # Создаем новый объект блокировки. Изначально блокировка в состоянии False. lock = thread.allocate_lock() # Блокируем объект lock.acquire() # Запоминаем блокировку lock_list.append(lock) # Запускаем новый поток и выполняем в нем функцию thread.start_new_thread(read_site, (number, url, lock)) # Ожидаем завершения всех потоков while(any([l.locked() for l in lock_list])): time.sleep(2) # Время завершения работы программы t2 = time.time() print 'Execution of all threads is complete, time: %.2f' % (t2-t1) """ #0, site: http://www.kremlin.ru, time: 0.09 #4, site: http://www.yandex.ru, time: 0.15 #5, site: http://www.google.ru, time: 0.17 #2, site: http://www.python.org, time: 0.19 #1, site: http://www.gosuslugi.ru, time: 0.52 #3, site: http://www.djangoproject.org, time: 1.63 Execution of all threads is complete, time: 2.00 """ + [url=http://ligh.te.ua/topic1195.html]Процессы и потоки в Python
|
Категория «Ню»
Взлеты Топ 5
Падения Топ 5
Популярные за сутки
|
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.

