python之threading与multiprocess,进程与线程

进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,简单来说就是几个cpu核心就可以开几个进程

线程:线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位,简单来说就是一个进程可以开很多线程。

而python中对于多进程的优化据说不是太好,在基础库里提供了threading(线程),与multiprocessing(进程)的基础库

1、多进程

## 多线程
import threading

## 线程执行函数
def func():
    print('thread:',threading.current_thread())

## 线程池
threads = []

## 添加线程
for _ in range(5):
    threads.append(threading.Thread(target=func))

## 启动线程
for thread in threads:
    thread.start()
    thread.join()

结果:

2、多线程

## 多进程
import multiprocessing
## 进程需要执行的函数
def func():
    print('process',multiprocessing.current_process())

## 有几个cpu核心添加几个进程
for _ in range(2):
    multiprocessing.Process(target=func).start()

结果:

3、多进程与多线程

import multiprocessing
import threading
import time
## 线程执行的函数
def func():
    print('thread:',threading.current_thread())
    print(time.time(),'
')
## 线程执行的函数
def bar():
    ## 线程池
    threads = []

    ##这里添加2个线程
    for _ in range(2):
        threads.append(threading.Thread(target=func))

    ## 启动线程
    for thread in threads:
        thread.start()
        thread.join()

## 进程池
multiprocess = []

## 有几核心cpu启动几个
for i in range(2):
    multiprocess.append(multiprocessing.Process(target=bar))

## 启动进程
for j in multiprocess:
    j.start()
    j.join()

查看结果:

原文地址:https://www.cnblogs.com/dflblog/p/11365346.html