Можно ли на потоках распараллелить задачу
Python
Junior
Без компании
Можно ли на потоках распараллелить задачу
Ответы
Да, в Python можно распараллелить задачу с помощью модуля `threading`, но из-за GIL (Global Interpreter Lock) потоки эффективны только для I/O-bound задач (например, сетевые запросы, работа с файлами). Для CPU-bound задач лучше использовать `multiprocessing`.
Пример с `threading` для I/O-bound задачи:
```
import threading
def download(url):
print(f"Downloading {url}...")
# Имитация I/O операции
time.sleep(2)
print(f"Finished {url}")
urls = ["url1", "url2", "url3"]
threads = []
for url in urls:
t = threading.Thread(target=download, args=(url,))
t.start()
threads.append(t)
for t in threads:
t.join()
```
Для CPU-bound задач используй `multiprocessing`:
```
from multiprocessing import Pool
def process_data(data):
return data * data
if __name__ == "__main__":
with Pool(4) as p:
results = p.map(process_data, range(10))
```