Python в три ручья: работаем с потоками (часть 1)


Download 29.86 Kb.
bet2/6
Sana22.02.2023
Hajmi29.86 Kb.
#1220570
1   2   3   4   5   6
Bog'liq
Python в три ручья

from threading import Thread

def prescript(thefile, num):
with open(thefile, 'w') as f:
for i in range(num):
if num > 500:
f.write('МногоБукв\n')
else:
f.write('МалоБукв\n')

thread1 = Thread(target=prescript, args=('f1.txt', 200,))


thread2 = Thread(target=prescript, args=('f2.txt', 1000,))

thread1.start()


thread2.start()
thread1.join()
thread2.join()
Что start() запускает ранее созданный поток, вы уже догадались. Метод join() останавливает поток, когда тот выполнит свои задачи. Ведь нужно закрыть открытые файлы и освободить занятые ресурсы. Это называется «Уходя, гасите свет». Завершать потоки в предсказуемый момент и явно — надёжнее, чем снаружи и неизвестно когда. Меньше риск, что вмешаются случайные факторы. В качестве параметра в скобках можно указать, на сколько секунд блокировать поток перед продолжением его работы.

Метод 2 — «классовый»


Для потока со сложным поведением обычно пишут отдельный класс, который наследуют от Thread из модуля threading. В этом случае программу действий потока прописывают в методе run() созданного класса. Ту же петрушку мы видели и в Java.
#coding: UTF-8

import threading
class MyThread(threading.Thread):
def __init__(self, num):
super().__init__(self, name="threddy" + num)
self.num = num
def run(self):
print ("Thread ", self.num),
thread1 = MyThread("1")
thread2 = MyThread("2")
thread1.start()
thread2.start()
thread1.join()
thread2.join()

Стандартные методы работы с потоками

Чтобы управлять потоками, нужно следить, как они себя ведут. И для этого в threading есть специальные методы:



Download 29.86 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling