首页 > 其他分享 >pytdx多线程示例

pytdx多线程示例

时间:2023-04-11 15:26:14浏览次数:40  
标签:__ HqHOSTS pytdx 示例 self list pathlib ips 多线程

# encoding=utf-8
import math
from pytdx.hq import TdxHq_API
import pathlib
import multiprocessing as mp
from multiprocessing import Pool


class myTdx:
    def __init__(self):
        self.HqHOSTS = pathlib.Path("HqHOSTS.txt").read_text().split()
        self.SYMBOLS = pathlib.Path("A.txt").read_text().split()
        self.SYMBOLS2 = self.getsymbols2()
        self.HSDICT = dict(zip(self.HqHOSTS, self.SYMBOLS2))
        self.manager = mp.Manager
        self.RESULT = self.manager().list()

    def getsymbols2(self):
        symbols = self.SYMBOLS
        total = len(symbols)
        page = len(self.HqHOSTS)
        perpage = math.ceil(total / page)
        return [symbols[i:i + perpage] for i in range(0, len(symbols), perpage)]

    def getdata(self, host, slist):
        # 数据获取接口一般返回list结构,
        api = TdxHq_API()
        liveapi = api.connect(host, 7709)
        if liveapi:
            r_list = []
            for symbol in slist:
                market_code = 1 if str(symbol[0]) == '6' else 0
                data = liveapi.get_transaction_data(market_code, symbol, 0, 30)
                rdic = {symbol: data}
                r_list.append(rdic)
            self.RESULT.extend(r_list)
        else:
            print(host, "服務器不可用...")
        liveapi.disconnect()

    def save(self):
        # print(self.RESULT)
        log = open('r.txt', 'a')
        print(self.RESULT, file=log)


if __name__ == '__main__':
    a = myTdx()
    pool = Pool(len(a.HqHOSTS))
    for host in a.HqHOSTS:
        alist = a.HSDICT.get(host)
        pool.apply_async(func=a.getdata, args=(host, alist))
    pool.close()
    pool.join()
    a.save()

  

# encoding=utf-8
from pytdx.hq import TdxHq_API
import pathlib
import re

if __name__ == '__main__':
    ips_text = pathlib.Path("HQHOSTA.txt").read_text(encoding='utf-8')  # 读取文件
    ips_list = re.compile(r'\d+\.\d+\.\d+\.\d+').findall(ips_text)  # 正则查找所有ip
    ips_listOK = []
    api = TdxHq_API()
    for ip in ips_list:
        if api.connect(ip, 7709):
            ips_listOK.append(ip)
    if len(ips_listOK) > 0:
        ips_listOld = pathlib.Path("HqHOSTS.txt").read_text(encoding='utf-8').split()
        ips_listOld.extend(ips_listOK)
        ips_new = list(set(ips_listOld))  # 去重
    pathlib.Path("HqHOSTS.txt").write_text("\n".join(ips_new))
    pathlib.Path('HQHOSTA.txt').unlink()
    print("完成")

  

标签:__,HqHOSTS,pytdx,示例,self,list,pathlib,ips,多线程
From: https://www.cnblogs.com/pu369/p/17306338.html

相关文章

  • chatgpt- httppost、get请求示例
    接口数据同步既可以使用POST请求,也可以使用GET请求。一般情况下,使用POST请求更安全,因为POST请求将数据放在请求体中,不会在URL中暴露数据,而GET请求将数据放在URL中,容易被拦截和篡改。以下是使用Java代码实现POST请求和GET请求的示例:使用POST请求同步数据importjava.io.Buffer......
  • Java中常用算法及示例-分治、迭代、递归、递推、动态规划、回溯、穷举、贪心
    场景1、分治算法的基本思想是将一个计算复杂的问题分成规模较小、计算简单的小问题求解,然后综合各个小问题,得到最终答案。2、穷举(又称枚举)算法的基本思想是从所有可能的情况中搜索正确的答案。3、迭代法(IterativeMethod)无法使用公式一次求解,而需要使用重复结构(即循环)......
  • 多线程事务的提交解决办法
    多线程处理的时候,如果发生了错误,不会因为加了@Transcational注解而生效,这里需要额外使用SqlSessionTemplate{//插入主表electronicTaxBillMapper.insertBatch(masterList);//更新出库单状态outOrderDetailMapper.updateByOrderCodeList(orderCodeList);//切......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-智能聊天机器人从0到1快速入门——官网推荐的
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • Java中创建线程的方式以及线程池创建的方式、推荐使用ThreadPoolExecutor以及示例
    场景Java中创建线程的方式有三种1、通过继承Thread类来创建线程定义一个线程类使其继承Thread类,并重写其中的run方法,run方法内部就是线程要完成的任务,因此run方法也被称为执行体,使用start方法来启动线程。2、通过实现Runanle接口来创建线程首先定义Runnable接口,并重写Runnab......
  • 翻译文本 API说明示例
    t_text-翻译文本名称 类型 必须 描述key String 是 调用key(必须以GET方式拼接在URL中)secret String 是 调用密钥(获取key和secret)api_name String 是 API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cache String 否 [yes,no]默认yes,将调用缓存的数据,速度比......
  • Dart内存泄漏示例及如何解决
    内存泄漏是指应用程序中的对象被分配了内存空间,但在不再需要这些对象时,它们仍然占用着内存空间而没有被垃圾回收。Dart语言使用自动垃圾回收器来管理内存,但如果代码存在一些常见的陷阱,可能会导致内存泄漏问题。下面是一些解决方案:及时释放资源:在使用完资源后,及时将其关闭或释放。例......
  • c++ 多线程摘记
    有没有linux和windows通用的多线程库?ChatGPT:是的,C++11标准引入了一个名为std::thread的多线程库,它可以在Windows和Linux上使用。std::thread库提供了一种方便的方式来创建和管理线程,包括启动、等待、终止和同步线程。此外,它还提供了一些便利的功能,例如线程局部存储......
  • 介绍几种等待多线程任务执行完毕的方法
    一.引言:在我们日常的开发过程中,我们经常会开启多个线程或者创建一个线程池去执行多个并发任务,当所有任务执行完毕后,我们一般会做一个统一的处理。那我们如何知道多个线程的任务已经全部执行完毕了呢?今天由我来为大家介绍几种方法:二.join()方法在这里插入图片描述......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-食谱智能生成从0到1快速入门——官网推荐的48
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......