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.