Temat 11: Przetwarzanie równoległe (II)
Wstecz; Ostatnia modyfikacja: 13.05.2015
- Ćwiczenie 0 (dokończenie): napisz program "runblast.py", który
wyszukuje zadaną sekwencję białkową w tych bazach danych BLAST używając
programu blastp lub psiblast.
cmd = "blastp -evalue 1e-10 -db dbs/mtu -query query.fasta -out mtu.out -outfmt 6"
os.system(cmd)
Standardowe biblioteki wspierające wielowątkowość i wieloprocesowość
w Pythonie:
threading oraz
multiprocessing
Procesy (ang. processes) posiadają, między innymi:
- systemowy identyfkator procesu (PID)
- wirtualną przestrzeń adresową
- wykonywalny kod maszynowy
- przynajmniej jeden wątek wykonania
Przykład programu z wieloma procesami
import multiprocessing
from multiprocessing import Pool
def f(x):
return (x, x*x)
if __name__ == '__main__':
workers = multiprocessing.cpu_count()
pool = Pool(processes=workers)
res = pool.imap_unordered(f, range(200), chunksize=5)
for r in res:
print(r)
Ćwiczenie 1: przetestuj szybkość działania powyższego programu
(oraz nieco zmodyfikowanych wersji) w zależności od liczby wykorzystywanych
wątków / procesów. Zbadaj obciążenie procesora wykananiem badanych programów.
Ile rdzeni jest wykorzystywanych?
Ćwiczenie 2: napisz program "runblastmulti.py", który
wyszukuje zadaną sekwencję białkową w tych bazach danych BLAST używając
programu blastp lub psiblast, ale na zadanej liczbie
procesów. Wykorzystaj bibliotekę multiprocessing.