关键词

Python之多进程与多线程的使用

Python之多进程与多线程的使用

1. 多进程与多线程概述

随着计算机处理器核心数目的不断增加,为了充分利用计算机的性能,多进程和多线程的编程模型越来越受到开发者的重视。

多进程

多进程是指在操作系统中同时运行多个任务,每个任务都是一个独立的进程,各进程之间相互独立,互不干扰。多进程通过将一份任务分配给多个进程处理来提高程序运行效率。

多线程

多线程是指在同一进程中运行多个任务,每个任务都是一个独立的线程,各线程之间共享同一进程的资源,多线程可以将一份任务分成多个子任务并行执行,从而提高程序的效率。

2. Python多进程的使用

Python提供了multiprocessing模块,用于支持多进程编程。

2.1 创建一个进程

import multiprocessing

def worker():
    print('hello, world!')

if __name__ == '__main__':
    p = multiprocessing.Process(target=worker)
    p.start()    # 启动进程
    p.join()     # 等待进程结束

上述示例中,我们创建了一个Process对象,并将一个函数worker作为参数传递给它。然后通过start()方法启动进程,join()方法用于等待进程结束。

2.2 创建多个进程

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个进程是并行执行的,因此不会按照顺序依次打印出结果。

3. Python多线程的使用

Python标准库提供了threading模块,用于支持多线程编程。

3.1 创建一个线程

import threading

def worker():
    print('hello, world!')

if __name__ == '__main__':
    t = threading.Thread(target=worker)
    t.start()    # 启动线程

上述示例中,我们创建了一个Thread对象,并将一个函数worker作为参数传递给它。然后通过start()方法启动线程。

3.2 创建多个线程

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

展开阅读全文