闽公网安备 35020302035485号
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`模块,我们的代码更加简洁,易读性和可维护性也有所提高。