Programowanie w Sieci Internet. Python: Wątki. Kraków, 12 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki



Podobne dokumenty
Wątki i komunikacja między nimi w języku Python

Współbieżność w środowisku Java

Zaawansowany kurs języka Python

Język Java wątki (streszczenie)

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Programowanie wielowątkowe. Jarosław Kuchta

Programowanie w Sieci Internet. Python: Operacje z plikami oraz obsługa wyjątków

Kurs rozszerzony języka Python

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

Kurs języka Python. Wątki

Programowanie komputerów

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

Kurs programowania. Wykład 8. Wojciech Macyna

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski

Język Java wątki (streszczenie)

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Wątki w Javie. Piotr Tokarski

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie współbieżne Zadanie 5 - Podstawowe problemy programowania współbieżnego

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

Bezbolesne Programowanie Współbieżne

6.1 Pojęcie wątku programu 6.2 Klasy Timer, TimerTask 6.3 Klasa Thread 6.4 Synchronizacja pracy wątków 6.5 Grupowanie wątków

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]

Współbieżność w Javie

Współbieżność w Javie

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1

PHP 5 język obiektowy

Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Aplikacje w Javie- wykład 11 Wątki-podstawy

WSPÓŁBIEŻNOŚĆ. MATERIAŁY:

Java. Programowanie Obiektowe Mateusz Cicheński

Programowanie obiektowe

Programowanie współbieżne Laboratorium nr 11

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Systemy operacyjne. Zajęcia 11. Monitory

Kurs języka Python. Wykład 5. Marcin Młotkowski. 9 listopada Rodzaje parametrów funkcji. 2 Biblioteka Tk. 3 Układanie kontrolek w oknie

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania).

Zaawansowane aplikacje WWW - laboratorium

Programowanie obiektowe zastosowanie języka Java SE

Języki i metody programowania

Wstęp. Ale po co? Implementacja

Wątki (Threads) Potrzeby. Przetwarzanie równoległe i współbieŝne. Cechy programowania wątkowego. Concurrent programming is like

Przetwarzanie równoległe i współbieżne

Aplikacja wielowątkowa prosty komunikator

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Platformy Programistyczne Zagadnienia sieciowe i wątki

1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)?

Wstęp do programowania

Podstawy programowania w Pythonie

Podstawy programowania w Pythonie

Zaawansowany kurs języka Python

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Ćwiczenia z przetwarzania tablic 2D

Wstęp do Programowania 2

Podstawy programowania w Pythonie

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Języki i metody programowania Java. Wykład 2 (część 2)

Programowanie wielowątkowe. Tomasz Borzyszkowski

1 Atrybuty i metody klasowe

Dawid Gierszewski Adam Hanasko

Programowanie obiektowe

Programowanie Obiektowe Ćwiczenie 4

Sphinx - system dokumentacji dla Pythona

Programowanie wielowątkowe: podstawowe koncepcje, narzędzia w Javie. J. Starzyński, JiMP2, rok akad. 2005/2006

Multimedia JAVA. Historia

Projektowanie aplikacji internetowych laboratorium

Wrocław, Wstęp do informatyki i programowania: liczby pierwsze. Wydział Matematyki Politechniki Wrocławskiej.

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Generatory. Michał R. Przybyłek

EPI: Interfejs Graficzny 2011/2012 Laboratorium nr 2 Programowanie obiektowe

4.1 Napisz kod, w którym definiujesz, tworzysz oraz uruchamiasz wątki z uŝyciem klas java.lang.thread oraz java.lang.runnable.

Podstawy współbieżności

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Dekoratora używa się wstawiając linijkę zaczynającą się przed definicją dekorowanego obiektu (klasy czy funkcji).

Programowanie Obiektowe GUI

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Ćwiczenie 5. Python 3: Programowanie obiektowe i dziedziczenie

Wprowadzenie do programowania współbieżnego. Grafika, Proste Animacje

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Zaawansowane programowanie w C++ (PCP)

Aplikacja wielow tkowa prosty komunikator

Kurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski. Zaawansowane Systemy Decyzyjne. Laboratorium

Plan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Komputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Stanowe komponenty sesyjne

Podstawy programowania w lejos

Aplikacje RMI Lab4

Programowanie w Javie

Transkrypt:

Programowanie w Sieci Internet Python: Wątki Kraków, 12 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Wątki akt pierwszy, kilka przydatnych funkcji Lib/threading.py modół pozwalający na używanie wątków threading.active_count() / threading.activecount() - zwraca liczbę aktywnych wątków. threading.current_thread() / threading.currentthread() - zwraca obecny wątek. threading.enumerate() - zwraca listę żywych wątków. threading.event() - zwraca objekt eventu. Posiada on flagę, którą można ustrawić na true za pomocą set(), lub false za pomocą clear(). Metoda wait() blokuje dopuki flaga jest ustawiona na true. Threading.Lock() - funkcja zapewniająca locka, dostep do do watku bedzie zablokowany dopuli lock nie zostanie zwolniony. threading.semaphore([val]) semafor, zwraca ile razy zostało wywołane release() minus liczbę wywołań acquire() plus wartość poczatkową [val] (domyślnie val = 1). threading.settrace(func) ustawia funkcję wołaną przed start().

Akt drugi, klasy powiązane z wątkami class threading.thread reprezentuje kontrolę wontku, może być rozszezana w pewnym zakresie. class threading.timer wątek który jest uruchamiany po wyznaczonym czasie. class threading.local klasa reprezentująca lokalny blok danych wątku. Thread-local to dane przypisane do konkretnego wątku. Aby wykorzystać lokalne dane, stwóż objekt i umieść w nim swoje atrybuty. Dane dostępne z interfejsu będą się różnić w zależności od wątku. exception thrading.threaderror wyjątek rzucany przy różnych zdarzeniach zwiazanych z wątkami.

Akt 3, co można zrobić w wątku run() to funkcja która wykonuje się podczas aktywności wątku. Pisząc swój wątek nadpisujemy ją i nadajemy jej jakiś sens oraz pracę do wykonania. Jest to jedyna funkcja którą powinniśmy nadpisywać rozrszeżająć klasę Thread. start() tej funkcji używamy do uruchamienia wątku, a ona rozpoczyna pracę poprzez uruchomienie funkcji run() dając kontrolę nad wątkiem. Kiedy wątek wystartuje, jest uznawany za żywy, aż do momentu gdy metoda run() zakończy swoje dzialanie (czy to w sposób naturalny, czy poprzez rzucenie nieobsłuzonego wyjątku. jojn([timeout]) wiąże wątki, dzięki czemu wątek wołany jest blokowany aż do momentu zakończenia działania wątku wołającego. Jeśli podany jest argument timeout, to wątek jest odblokowany po zakończeniu wątku wołającego, lub czasie timeout w sekundach.

Akt 3 ciąg dalszy name to string identyfikujący wątek. Wiele wątków może mieć tą samą nazwę. Początkowa nazwa jest nadawana przez konstruktor. getname() i setname() to api do zarzadzania nazwą wątków. Ident identyfikator wątku. Jest to liczba całkowita, niezerowa nadawana w momencie wystartowania wątku (gdy wątek jest powołany do życia. Przed ożyciem wątku, ma wartość None. Ident jest dostępny nawet po zakonczeniu życia wątku. is_alive() / isalive() - mówi czy wątek ma status alive. daemon / isdaemon(), setdaemon() wątek typu daemon nie zatrzyma zakończenia programu Pythona. Domyślna wartość to false. Aby ustawić ją na true należy zrobić to przed uruchomienim funkcji start(), w przeciwnym wypadku run() rzuci wyjątkiem RuntimeError.

Akt 4, użycie import threading def worker(num): """thread worker function""" print 'Worker: %s' % num return threads = [] for i in range(5): t = threading.thread(target=worker, args=(i,)) threads.append(t) t.start()

class mythread (threading.thread): def init (self, threadid, name, counter): threading.thread. init (self) self.threadid = threadid self.name = name self.counter = counter def run(self): print "Starting " + self.name print_time(self.name, self.counter, 5) print "Exiting " + self.name def print_time(threadname, delay, counter): if exit_condition: thread.exit() time.sleep(delay) print "%s: %s" % (threadname, time.ctime(time.time())) counter -= 1 # Create new threads thread1 = mythread(1, "Thread-1", 1) thread2 = mythread(2, "Thread-2", 2) # Start new Threads thread1.start() thread2.start() print "Exiting Main Thread"

Dziękuję za uwagę!