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

如何使用多线程和多进程来实现并发执行函数?

发布时间:2023-06-24 20:11:16

在计算机科学中,并发是指执行多个独立的任务或操作,使它们交替执行以便在任何时刻都可以进行操作。在程序开发中,并发使得程序能够更加高效和响应更快,因为它可以同时处理多个任务。这种并发的实现可以通过多线程和多进程实现。

多线程是指在同一个程序中的多个线程并行执行,每个线程拥有自己的状态和上下文,并且可以相互访问共享的内存空间。多线程能够提高程序的性能和响应速度,使得程序能够更好地应对并发任务和操作。在Python中,可以使用 threading 模块实现多线程并发执行函数。

下面是一个使用多线程实现并发执行函数的示例代码:

import threading

def foo():
  print("Thread executing")
  
threads = []
for i in range(5):
  t = threading.Thread(target=foo)
  threads.append(t)
  t.start()

for t in threads:
  t.join()

该代码中我们定义了一个函数 foo,它只是简单地输出一条信息。我们创建了一个包含 5 个线程的线程池,每个线程从线程池中取出执行 foo 函数。由于所有的线程是并行执行的,我们需要使用 join() 函数等待所有线程都执行完毕。运行该程序,可以看到程序输出 5 条线程执行的信息。

多进程是指同时运行多个独立的进程,每个进程有自己的地址空间和系统资源,并且不能相互访问。多进程可以提高电脑的CPU几核心数的利用率,提高程序的计算速度。在Python中,可以使用 multiprocessing 模块实现多进程并发执行函数。

下面是一个使用多进程实现并发执行函数的示例代码:

import multiprocessing

def foo():
  print("Process executing")

processes = []
for i in range(5):
  p = multiprocessing.Process(target=foo)
  processes.append(p)
  p.start()

for p in processes:
  p.join()

该代码与使用多线程的代码非常相似,只是我们使用了 multiprocessing 模块来实现多进程并发执行。与多线程类似,我们创建了包含 5 个进程的进程池,并用其执行 foo 函数。同样,我们需要使用 join() 函数等待所有进程都执行完毕。运行该程序,可以看到程序输出 5 条进程执行的信息。

使用多线程和多进程的并发执行函数,需要根据实际情况选择最适合的方式。在处理大量数据和需要做 CPU 密集型操作时,多进程更有效率,因为不同的进程可以在不同的 CPU 核心上运行,从而利用多核 CPU 的计算能力。而在 IO 密集型的操作中,多线程通常比多进程更高效,因为线程之间的上下文切换成本比进程更小。