import threading # 堆代码 duidaima.com def print_numbers(): for i in range(10): print(i) def print_letters(): for letter in 'abcdefghij': print(letter) # 创建线程 t1 = threading.Thread(target=print_numbers) t2 = threading.Thread(target=print_letters) # 启动线程 t1.start() t2.start() # 等待线程结束 t1.join() t2.join()在上面的例子中,我们定义了两个函数:一个打印数字,另一个打印字母。然后我们创建了两个线程,每个线程的目标是执行这些函数。`start()`方法用于启动线程,而`join()`方法用于等待线程完成。
import multiprocessing def print_numbers(): for i in range(10): print(i) def print_letters(): for letter in 'abcdefghij': print(letter) # 创建进程 p1 = multiprocessing.Process(target=print_numbers) p2 = multiprocessing.Process(target=print_letters) # 启动进程 p1.start() p2.start() # 等待进程结束 p1.join() p2.join()
这个例子和前面的多线程例子类似,不同的是这里我们创建的是两个进程,而不是线程。
import concurrent.futures def print_numbers(): for i in range(10): print(i) def print_letters(): for letter in 'abcdefghij': print(letter) # 使用线程池 with concurrent.futures.ThreadPoolExecutor() as executor: future1 = executor.submit(print_numbers) future2 = executor.submit(print_letters) for future in concurrent.futures.as_completed([future1, future2]): pass # 使用进程池 with concurrent.futures.ProcessPoolExecutor() as executor: future1 = executor.submit(print_numbers) future2 = executor.submit(print_letters) for future in concurrent.futures.as_completed([future1, future2]): pass在上面的例子中,我们创建了线程池和进程池,然后向它们提交任务。可以看到,使用`concurrent.futures`模块,我们的代码更加简洁,易读性和可维护性也有所提高。