zoukankan      html  css  js  c++  java
  • 量化编程技术—多线程和多进程

    # -*- 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)
  • 相关阅读:
    基于最大最小距离的分类数目上限K确定的聚类方法
    diff函数(matlab)
    CreateThread线程函数
    套接字基础
    基于TCP套接字实现的简单Demo
    使用httpwatch抓包
    TLV----Demo讲解
    关于位图边缘的检测定位
    从txt中读入数据到数组中(fscanf)
    C语言运算符的优先级
  • 原文地址:https://www.cnblogs.com/bitquant/p/11521512.html
Copyright © 2011-2022 走看看