码迷,mamicode.com
首页 > 编程语言 > 详细

Python多进程VS多线程

时间:2018-03-26 10:49:55      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:end   ted   worker   res   简单函数   adp   div   c函数   使用   

多线程:适用于处理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多线程

标签:end   ted   worker   res   简单函数   adp   div   c函数   使用   

原文地址:https://www.cnblogs.com/fangbei/p/8648951.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!