python

python的def命令如何进行函数并发执行

小樊
81
2024-12-12 01:33:41
栏目: 编程语言

在Python中,可以使用concurrent.futures模块中的ThreadPoolExecutorProcessPoolExecutor类来实现函数的并发执行。这里分别给出两个例子,一个使用线程池,另一个使用进程池。

使用线程池(ThreadPoolExecutor):

import concurrent.futures
import time

def my_function(x):
    print(f"Starting function {x}")
    time.sleep(2)  # 模拟耗时操作
    print(f"Finished function {x}")
    return x * x

def main():
    with concurrent.futures.ThreadPoolExecutor() as executor:
        futures = [executor.submit(my_function, i) for i in range(5)]
        
        for future in concurrent.futures.as_completed(futures):
            result = future.result()
            print(f"Result: {result}")

if __name__ == "__main__":
    main()

使用进程池(ProcessPoolExecutor):

import concurrent.futures
import time

def my_function(x):
    print(f"Starting function {x}")
    time.sleep(2)  # 模拟耗时操作
    print(f"Finished function {x}")
    return x * x

def main():
    with concurrent.futures.ProcessPoolExecutor() as executor:
        futures = [executor.submit(my_function, i) for i in range(5)]
        
        for future in concurrent.futures.as_completed(futures):
            result = future.result()
            print(f"Result: {result}")

if __name__ == "__main__":
    main()

在这两个例子中,我们定义了一个名为my_function的函数,它接受一个参数x,模拟耗时操作(这里使用time.sleep(2)),然后返回x的平方。

main函数中,我们创建了一个ThreadPoolExecutorProcessPoolExecutor实例,然后使用submit方法将my_function提交给线程池或进程池。submit方法返回一个Future对象,表示异步计算的结果。我们可以使用as_completed函数来迭代已完成的Future对象,并获取它们的结果。

注意:ThreadPoolExecutor适用于I/O密集型任务,而ProcessPoolExecutor适用于CPU密集型任务。在这个例子中,我们使用了I/O密集型任务(模拟耗时操作),但如果你需要处理计算密集型任务,请使用ProcessPoolExecutor

0
看了该问题的人还看了