欢迎访问宙启技术站
智能推送

使用Python和Haskell编写的并发编程应用案例

发布时间:2023-12-09 10:57:05

并发编程是指同时执行多个任务的编程范式。使用Python和Haskell这两种编程语言可以实现高效的并发编程应用。下面将介绍两个具体的案例并附上使用代码示例。

案例一:多线程并发下载器

使用Python编写一个多线程并发下载器,可以同时下载多个文件。

import requests
import threading

def download_file(url, save_path):
    response = requests.get(url)
    with open(save_path, 'wb') as file:
        file.write(response.content)
    print(f"Downloaded {url} to {save_path}")

urls = [
    "https://example.com/file1.txt",
    "https://example.com/file2.txt",
    "https://example.com/file3.txt"
]
save_paths = [
    "file1.txt",
    "file2.txt",
    "file3.txt"
]

threads = []

# 创建多个下载线程
for i in range(len(urls)):
    thread = threading.Thread(target=download_file, args=(urls[i], save_paths[i]))
    thread.start()
    threads.append(thread)

# 等待所有线程完成
for thread in threads:
    thread.join()

案例二:异步编程

使用Haskell编写一个简单的异步编程应用,通过并发执行IO操作提高程序的效率。

import Control.Concurrent.Async (async, wait)

task1 :: IO String
task1 = do
    putStrLn "Task 1 started"
    -- 执行一些IO操作
    putStrLn "Task 1 finished"
    return "Task 1 result"

task2 :: IO String
task2 = do
    putStrLn "Task 2 started"
    -- 执行一些IO操作
    putStrLn "Task 2 finished"
    return "Task 2 result"

main :: IO ()
main = do
    -- 启动两个异步任务
    async1 <- async task1
    async2 <- async task2

    -- 等待任务完成并获取结果
    result1 <- wait async1
    result2 <- wait async2

    -- 处理任务结果
    putStrLn $ "Task 1 result: " ++ result1
    putStrLn $ "Task 2 result: " ++ result2

以上是两个不同语言的并发编程应用案例。Python通过多线程实现多文件的并发下载,而Haskell则通过异步编程实现了执行IO操作的并发执行。这些案例可以帮助开发者更好地理解并发编程的概念,并在实际应用中提高程序的性能和效率。