Strona główna Polish Python Coders Group
   Strona główna   Pomoc Zaloguj się Rejestracja  
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji

Aktualności: PyStok #39, 20 marca 18:00, Białystok: AI w diagnostyce obrazowej i metaklasy
Szukaj Szukaj
Strony: [1]   Do dołu
Drukuj
Wątek: 2 While  (Przeczytany 179 razy)
« : 11:42 10/03/19 »
marcinvxy Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 10


Witam.
Czy jest możliwość uruchomienia w tym samym czasie np. dwóch
pętli while niezależnych od siebie? Wykonywanie dwóch lub więcej czynności niezależnych od siebie w tym samym czasie? Poproszę o kod Uśmiech

Z góry dziękuję
Zapisane
« Odpowiedz #1 : 18:19 10/03/19 »
Guaz Offline
Professional Python User

Zobacz profil
***

Reputacja: 60
Płeć: Mężczyzna
Wiadomości: 445


Najpierw musiałbyś sprecyzować co konkretnie chcesz osiągnąć bo metody są na to różne.
Między innymi pierwsze które przychodzą mi do głowy to: 'Threating', 'Asynchronous', 'Fork' i 'Suprocess'.

Poczytaj sobie o tych zagadnieniach i jak będziesz wiedział co do twoich potrzeb jest najbardziej potrzebne, mogę ci podać źródło jakiegoś drobnego tutorialu odnośnie tego Uśmiech.
Albo ewentualnie możesz tu przedstawić wyczerpująco problem, to może będę (lub ktoś inny będzie) w stanie doradzić z czym się zaznajomić. Ogólnie 'wykonywanie dwóch czynności jednocześnie' gdy są od siebie niezależne, jest bardzo proste. Problemy dopiero się rodzą przy zależnościach, oczekiwaniu itd.
Zapisane

Python 3.5+ / Mint

Daje wędkę zamiast ryby. Chyba że ktoś się chce czegoś nauczyć, wtedy chętnie pomogę każdemu.
Za rybę niestety trzeba zapłacić Z politowaniem.
« Odpowiedz #2 : 15:11 14/03/19 »
marcinvxy Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 10


Chcę zrobić kilka kopii pliku, kopiowanie jednego trwa kilka minut.
W czasie rzeczywistym chciałbym liczyć czas trwania kopiowania.
Zależy mi na tym aby uruchomić to jednocześnie.
Pozdrawiam Chichot

import time
import shutil

def funkcja():
    i = 0
    for i in range(2):
        shutil.copyfile('E:\\windows.iso', 'G:\\{}.iso'.format(str(i)))
        i+=1


def czas():
    s = 0
    while 1:
        time.sleep(1)
        s+=1
        print(s)
Zapisane
« Odpowiedz #3 : 06:42 15/03/19 »
Guaz Offline
Professional Python User

Zobacz profil
***

Reputacja: 60
Płeć: Mężczyzna
Wiadomości: 445


To zaznajom się z modułem Threating. Czasu rzeczywistego nie oczekuj, chyba że dysponujesz dedykowanym sprzętem z procesorem czasu rzeczywistego, niemniej złudzenie jakie mamy przy codziennym kopiowaniu plików zapewne będzie wystarczające Chichot .

Osobiście polecam ten tutorial:
https://www.youtube.com/watch?v=Ld1A8QTDY3o

W nim znajdziesz w sumie wszystko czego powinieneś użyć, oraz jest to względnie wyczerpująco opisane. A przynajmniej ciężko uwzględnić więcej w materiale o takiej długości, po inne rzeczy jak już z tym wystartujesz możesz 'ruszyć' do dokumentacji tego modułu Uśmiech

A jak się gdzieś zawiesisz i będziesz w martwym punkcie, to pisz i wklej kod w znacznikach {code=python} #twój kod {/code} (Tylko używając kwadratowych nawiasów `[ ]` zamiast klamer `{ }` ). Coś zaradzimy Uśmiech
Zapisane

Python 3.5+ / Mint

Daje wędkę zamiast ryby. Chyba że ktoś się chce czegoś nauczyć, wtedy chętnie pomogę każdemu.
Za rybę niestety trzeba zapłacić Z politowaniem.
« Odpowiedz #4 : 18:07 20/03/19 »
DJangoL Offline
Professional Python User

Zobacz profil
***

Reputacja: 28
Wiadomości: 393


Najpierw musiałbyś sprecyzować co konkretnie chcesz osiągnąć bo metody są na to różne.
Między innymi pierwsze które przychodzą mi do głowy to: 'Threating', 'Asynchronous', 'Fork' i 'Suprocess'.

O Fork nie słyszałem, do czego służy?

Kod
for i in range(2):
       shutil.copyfile('E:\\windows.iso', 'G:\\{}.iso'.format(str(i)))
       i+=1

Zmienną i inkrementujesz celowo w ten sposób czy pomyliłeś pętle?


Zapisane
« Odpowiedz #5 : Wczoraj o 05:19 »
Guaz Offline
Professional Python User

Zobacz profil
***

Reputacja: 60
Płeć: Mężczyzna
Wiadomości: 445


fork z biblioteki os, tworzy procesy potomne, czym później się zajmuje menadżer procesora:
https://docs.python.org/3/library/os.html#os.fork

Gdy inny skrypt ma się wykonywać niezależnie, i zamykać się w razie gdyby proces macierzysty został wyłączony, to można skorzystać z forkowania. (W tym przypadku raczej wątpliwe). Ogólnie odpowiednio sparametryzowany subprocess też pozwalał zrobić dokładnie to samo co fork. Nie ma względnie nawet sensu się z tym zapoznawać jeśli nie jest ci potrzebne konkretnie forkowanie, bo są tzw. 'lepsze metody' Uśmiech.
Zapisane

Python 3.5+ / Mint

Daje wędkę zamiast ryby. Chyba że ktoś się chce czegoś nauczyć, wtedy chętnie pomogę każdemu.
Za rybę niestety trzeba zapłacić Z politowaniem.
« Odpowiedz #6 : Wczoraj o 14:01 »
DJangoL Offline
Professional Python User

Zobacz profil
***

Reputacja: 28
Wiadomości: 393


Dzięki za info.

Tu znalazłem dość ciekawe omówienie kilku metod:

General concepts: concurrency, parallelism, threads and processes

https://learn-gevent-socketio.readthedocs.io/en/latest/general_concepts.html
Zapisane
Strony: [1]   Do góry
Drukuj
Skocz do:  

© 2007 - 2019 Polish Python Coders Group
Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | Theme by PixelSlot