На главную страницу | Новости | Ссылки | Контакты
В языке Python есть 2 основных способа распараллеливания программ.
- fork/exec - ветвление процессов;
- thread/threading - порожденные потоки.
Это стандартный для linux-систем способ ветвления процессов (под виндой он не всегда будет работать).
Требуется импортировать модуль
import os
Работает это в два шага:
1) Создается точная копия процесса вместе с копией глобальной памяти:
pid = os.fork()
2) подмена процесса - запуск другой программы
os.execlp('python', 'python', 'child.py', str(parm))
Есть два варианта работы с потоками:
- низкоуровневый модуль _thread (для python3) или просто thread (для python2);
- высокоуровневый модуль threading , который является объектно-ориентированной оберткой над _thread.
Простой пример (взято из книги Лутца, но я добавил еще глобальную переменную x, через которую можно взаимодействовать между потоками).
import _thread
x = 5
def child(tid):
print('child', tid)
global x
x = x+1
print('x='+str(x))
def parent():
i = 0
print('parent')
while True:
i += 1
_thread.start_new_thread(child, (i,))
if input() == 'q': break
parent()