量化编程技术—多线程和多进程

# -*- coding: utf-8 -*-
# @Date:   2017-08-26
# @Original:

# 多进程
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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比特量化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值