随着计算机处理器核心数目的不断增加,为了充分利用计算机的性能,多进程和多线程的编程模型越来越受到开发者的重视。
多进程是指在操作系统中同时运行多个任务,每个任务都是一个独立的进程,各进程之间相互独立,互不干扰。多进程通过将一份任务分配给多个进程处理来提高程序运行效率。
多线程是指在同一进程中运行多个任务,每个任务都是一个独立的线程,各线程之间共享同一进程的资源,多线程可以将一份任务分成多个子任务并行执行,从而提高程序的效率。
Python提供了multiprocessing
模块,用于支持多进程编程。
import multiprocessing
def worker():
print('hello, world!')
if __name__ == '__main__':
p = multiprocessing.Process(target=worker)
p.start() # 启动进程
p.join() # 等待进程结束
上述示例中,我们创建了一个Process
对象,并将一个函数worker
作为参数传递给它。然后通过start()
方法启动进程,join()
方法用于等待进程结束。
import multiprocessing
import time
def worker(num):
print('start worker %d' % num)
time.sleep(num)
print('end worker %d' % num)
if __name__ == '__main__':
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
p.start() # 启动进程
上述示例中,我们通过循环创建了5个进程,并将参数i
传递给函数worker
。每个进程都会执行worker
函数,并打印出执行结果。由于5个进程是并行执行的,因此不会按照顺序依次打印出结果。
Python标准库提供了threading
模块,用于支持多线程编程。
import threading
def worker():
print('hello, world!')
if __name__ == '__main__':
t = threading.Thread(target=worker)
t.start() # 启动线程
上述示例中,我们创建了一个Thread
对象,并将一个函数worker
作为参数传递给它。然后通过start()
方法启动线程。
import threading
import time
def worker(num):
print('start worker %d' % num)
time.sleep(num)
print('end worker %d' % num)
if __name__ == '__main__':
threads = []
for i in range(5):
t = threading.Thread(target=worker, args=(i,))
threads.append(t)
t.start()
for t in threads:
t.join()
上述示例中,我们通过循环创建了5个线程,并将参数i
传递给函数worker
。每个线程都会执行worker
函数,并打印出执行结果。最后通过join()
方法等待所有线程执行完毕。注意,主线程也要等待子线程结束后才能退出,因此需要调用join()
方法等待所有线程执行结束。
本文链接:http://task.lmcjl.com/news/13470.html