И снова этот PYTHON!
Про GIL (global interpreter lock) python написано уже достаточно, поэтому ниже я всего-лишь хочу привести пару примеров работы с процессами и потоками на python.
Каждый из них порождает 25 «спящих»(sleep 10) «рабочих»(worker), которые информируют о своем старте и завершении в stdout.
С их помощью можно сравнить их работу в тех или иных условиях, провести анализ и выбрать тот вариант, который наиболее подходит для решения вашей задачи.
Пример мультипроцессорного приложения:
#!/usr/bin/env python # -*- coding: utf-8 -*- import multiprocessing import time def worker(num): print "[+] start " + str(num) time.sleep(10) print "[-] ended " + str(num) return jobs = [] for i in range(25): p = multiprocessing.Process(target=worker, args=(i,)) jobs.append(p) print "run " + str(i) p.start()
Пример мультипотокового приложения:
#!/usr/bin/env python # -*- coding: utf-8 -*- import threading import time def worker(num): print "[+] start " + str(num) time.sleep(10) print "[-] ended " + str(num) return jobs = [] for i in range(25): t = threading.Thread(target=worker, args=(i,)) print "run " + str(i) t.start()