Python多进程VS多线程

Posted fangbei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python多进程VS多线程相关的知识,希望对你有一定的参考价值。

多线程:适用于处理I/O密集型任务和并发执行的阻塞操作
多进程:适用于处理计算密集型任务

 

# 多进程
import itertools
from concurrent.futures import ProcessPoolExecutor
result = []

# 回调函数,通过add_done_callback任务完成后调用
def when_done(r):
    # when_done在主进程中运行
    result.append(r.result())

"""
    with class_a() as a: 上下文管理器
"""
with ProcessPoolExecutor() as pool:
    for keep_stock_threshold, buy_change_threshold in             itertools.product(keep_stock_list, buy_change_list):

        """
            submit提交任务:使用calc函数和的参数通过submit提交到独立进程
            提交的任务必须是简单函数,进程并行不支持类方法、闭包等
            函数参数和返回值必须兼容pickle序列化,进程间的通信需要
        """
        future_result = pool.submit(calc, keep_stock_threshold,
                                    buy_change_threshold)
        # 当进程完成任务即calc运行结束后的回调函数
        future_result.add_done_callback(when_done)
print(sorted(result)[::-1][:10])

 

# 多线程
from concurrent.futures import ThreadPoolExecutor

result = []
def when_done(r):
    result.append(r.result())

with ThreadPoolExecutor(max_workers=8) as pool:
    for keep_stock_threshold, buy_change_threshold in             itertools.product(keep_stock_list, buy_change_list):
        future_result = pool.submit(calc, keep_stock_threshold,
                                    buy_change_threshold)
        future_result.add_done_callback(when_done)

 

以上是关于Python多进程VS多线程的主要内容,如果未能解决你的问题,请参考以下文章

Python多进程VS多线程

[Python3] 043 多线程 简介

python中的多线程和多进程编程

Python并发编程04/多线程

进程 vs. 线程(python的协程)(转廖雪峰老师python教程)

Python学习笔记__10.4章 进程VS线程