import time
import concurrent.futures
import threading
import pandas as pd
import queue
class Strategy(object):
"""策略类,处理任务结果"""
def __init__(self, save_path: str):
self.save_path = save_path
self.result_queue = queue.Queue()
self.results: list = []
def _setdata_hreo(self):
"""设置数据"""
# 创建集合并转为列表
opt_set = {"弓", "勇武无双","攻击·连击"}
opts = list(opt_set)
print("策略选项:\n", opts)
# 修正字典中列表拼接的语法错误
dataset = {
"英雄": ["孙尚香"],
"兵种": [opts[0], opts[1]], # 用逗号分隔元素
"定位": [opts[2]],
}
print("数据集:\n", dataset)
self.results.append(dataset)
self.result_queue.put(self.results)
print("结果列表:\n", self.results)
self.get_results(dataset)
def get_results(self,dataset):
if dataset:
df = pd.DataFrame(self.results)
print("DataFrame:{}".format(df))
else:
print("错误")
def get_queue(self):
if self.result_queue:
data = self.result_queue.get()
print("队列:\n{}".format(data))
def loop(self):
if self.results:
index :int = 0
length :int = len(self.results)
while index < length:
result = self.results[index]
print("循环♻️",result)
index += 1
def resource(self,*item):
if item:
self.result_queue.put(item)
items = self.result_queue.get()
print("队列:\n",items)
def main():
strategy = Strategy(save_path="./")
strategy._setdata_hreo()
strategy.get_queue()
strategy.loop()
strategy.resource({
"等级":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
})
# 实例化策略类并调用方法
if __name__ == "__main__":
tasks :list = []
thr = threading.Thread(target=main)
tasks.append(thr)
index = 0
length = len(tasks)
start = time.time()
while index < length:
task = tasks[index]
task.start()
index += 1
print("线程结束")
end = time.time()
print(f"耗时:{end - start:.6f}")
st = time.time()
while index < length:
task = tasks[index]
task.join()
index += 1
print("任务全部完成")
ed = time.time()
print(f"耗时:{ed - st:.6f}")
aW1wb3J0IHRpbWUKaW1wb3J0IGNvbmN1cnJlbnQuZnV0dXJlcwppbXBvcnQgdGhyZWFkaW5nCmltcG9ydCBwYW5kYXMgYXMgcGQKaW1wb3J0IHF1ZXVlCgoKCgpjbGFzcyBTdHJhdGVneShvYmplY3QpOgogICAgIiIi562W55Wl57G777yM5aSE55CG5Lu75Yqh57uT5p6cIiIiCiAgICAKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzYXZlX3BhdGg6IHN0cik6CiAgICAgICAgc2VsZi5zYXZlX3BhdGggPSBzYXZlX3BhdGgKICAgICAgICBzZWxmLnJlc3VsdF9xdWV1ZSA9IHF1ZXVlLlF1ZXVlKCkKICAgICAgICBzZWxmLnJlc3VsdHM6IGxpc3QgPSBbXQogICAgCiAgICBkZWYgX3NldGRhdGFfaHJlbyhzZWxmKToKICAgICAgICAiIiLorr7nva7mlbDmja4iIiIKICAgICAgICAjIOWIm+W7uumbhuWQiOW5tui9rOS4uuWIl+ihqAogICAgICAgIG9wdF9zZXQgPSB7IuW8kyIsICLli4fmrabml6Dlj4wiLCLmlLvlh7vCt+i/nuWHuyJ9CiAgICAgICAgb3B0cyA9IGxpc3Qob3B0X3NldCkKICAgICAgICBwcmludCgi562W55Wl6YCJ6aG577yaXG4iLCBvcHRzKSAKICAgICAgICAKICAgICAgICAjIOS/ruato+Wtl+WFuOS4reWIl+ihqOaLvOaOpeeahOivreazlemUmeivrwogICAgICAgIGRhdGFzZXQgPSB7CiAgICAgICAgICAgICLoi7Hpm4QiOiBbIuWtmeWwmummmSJdLAogICAgICAgICAgICAi5YW156eNIjogW29wdHNbMF0sIG9wdHNbMV1dLCAjIOeUqOmAl+WPt+WIhumalOWFg+e0oAogICAgICAgICAgICAi5a6a5L2NIjogW29wdHNbMl1dLAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgIHByaW50KCLmlbDmja7pm4bvvJpcbiIsIGRhdGFzZXQpCiAgICAgICAgCiAgICAgICAgc2VsZi5yZXN1bHRzLmFwcGVuZChkYXRhc2V0KQogICAgICAgIHNlbGYucmVzdWx0X3F1ZXVlLnB1dChzZWxmLnJlc3VsdHMpCiAgICAgICAgcHJpbnQoIue7k+aenOWIl+ihqO+8mlxuIiwgc2VsZi5yZXN1bHRzKQogICAgICAgIHNlbGYuZ2V0X3Jlc3VsdHMoZGF0YXNldCkKICAgIAogICAgZGVmIGdldF9yZXN1bHRzKHNlbGYsZGF0YXNldCk6CiAgICAgICAgaWYgZGF0YXNldDoKICAgICAgICAgICAgZGYgPSBwZC5EYXRhRnJhbWUoc2VsZi5yZXN1bHRzKQogICAgICAgICAgICBwcmludCgiRGF0YUZyYW1l77yae30iLmZvcm1hdChkZikpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJpbnQoIumUmeivryIpCiAgICAKICAgIGRlZiBnZXRfcXVldWUoc2VsZik6CiAgICAgICAgaWYgc2VsZi5yZXN1bHRfcXVldWU6CiAgICAgICAgICAgIGRhdGEgPSBzZWxmLnJlc3VsdF9xdWV1ZS5nZXQoKQogICAgICAgICAgICBwcmludCgi6Zif5YiX77yaXG57fSIuZm9ybWF0KGRhdGEpKQogICAgICAgICAgICAKICAgIGRlZiBsb29wKHNlbGYpOgogICAgICAgIGlmIHNlbGYucmVzdWx0czoKICAgICAgICAgICAgaW5kZXggOmludCA9IDAKICAgICAgICAgICAgbGVuZ3RoIDppbnQgPSBsZW4oc2VsZi5yZXN1bHRzKQogICAgICAgICAgICB3aGlsZSBpbmRleCA8IGxlbmd0aDoKICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYucmVzdWx0c1tpbmRleF0KICAgICAgICAgICAgICAgIHByaW50KCLlvqrnjq/imbvvuI8iLHJlc3VsdCkKICAgICAgICAgICAgICAgIGluZGV4ICs9IDEKICAgICAgICAgICAgICAgIAogICAgZGVmIHJlc291cmNlKHNlbGYsKml0ZW0pOgogICAgICAgIGlmIGl0ZW06CiAgICAgICAgICAgIAogICAgICAgICAgICBzZWxmLnJlc3VsdF9xdWV1ZS5wdXQoaXRlbSkKICAgICAgICAgICAgaXRlbXMgPSBzZWxmLnJlc3VsdF9xdWV1ZS5nZXQoKQogICAgICAgICAgICBwcmludCgi6Zif5YiX77yaXG4iLGl0ZW1zKQogICAgICAgICAgICAKZGVmIG1haW4oKToKICAgICAgICAKICAgIHN0cmF0ZWd5ID0gU3RyYXRlZ3koc2F2ZV9wYXRoPSIuLyIpCiAgICBzdHJhdGVneS5fc2V0ZGF0YV9ocmVvKCkKICAgIHN0cmF0ZWd5LmdldF9xdWV1ZSgpCiAgICBzdHJhdGVneS5sb29wKCkKICAgIAogICAgc3RyYXRlZ3kucmVzb3VyY2UoewogICAgICAgICAgICAgIuetiee6pyI6WzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2XQogICAgfSkKICAgIAoKIyDlrp7kvovljJbnrZbnlaXnsbvlubbosIPnlKjmlrnms5UKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIAogICAgCiAgICB0YXNrcyA6bGlzdCA9IFtdCiAgICB0aHIgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1tYWluKQogICAgdGFza3MuYXBwZW5kKHRocikKICAgIAogICAgaW5kZXggPSAwCiAgICBsZW5ndGggPSBsZW4odGFza3MpCiAgICAKICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKICAgIHdoaWxlIGluZGV4IDwgbGVuZ3RoOgogICAgICAgIHRhc2sgPSB0YXNrc1tpbmRleF0KICAgICAgICB0YXNrLnN0YXJ0KCkKICAgICAgICBpbmRleCArPSAxCiAgICBwcmludCgi57q/56iL57uT5p2fIikKICAgIGVuZCA9IHRpbWUudGltZSgpCiAgICBwcmludChmIuiAl+aXtu+8mntlbmQgLSBzdGFydDouNmZ9IikKICAgIAogICAgc3QgPSB0aW1lLnRpbWUoKQogICAgd2hpbGUgaW5kZXggPCBsZW5ndGg6CiAgICAgICAgdGFzayA9IHRhc2tzW2luZGV4XQogICAgICAgIHRhc2suam9pbigpCiAgICAgICAgaW5kZXggKz0gMQogICAgICAgIAogICAgcHJpbnQoIuS7u+WKoeWFqOmDqOWujOaIkCIpCiAgICBlZCA9IHRpbWUudGltZSgpCiAgICBwcmludChmIuiAl+aXtu+8mntlZCAtIHN0Oi42Zn0iKQ==
策略选项:
['勇武无双', '攻击·连击', '弓']
数据集:
{'英雄': ['孙尚香'], '兵种': ['勇武无双', '攻击·连击'], '定位': ['弓']}
结果列表:
[{'英雄': ['孙尚香'], '兵种': ['勇武无双', '攻击·连击'], '定位': ['弓']}]
线程结束
耗时:0.013062
任务全部完成
耗时:0.000001
DataFrame: 英雄 兵种 定位
0 [孙尚香] [勇武无双, 攻击·连击] [弓]
队列:
[{'英雄': ['孙尚香'], '兵种': ['勇武无双', '攻击·连击'], '定位': ['弓']}]
循环♻️ {'英雄': ['孙尚香'], '兵种': ['勇武无双', '攻击·连击'], '定位': ['弓']}
队列:
({'等级': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]},)