hikyuu 2.6.8.3__py3-none-manylinux2014_aarch64.whl → 2.7.3__py3-none-manylinux2014_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. hikyuu/__init__.py +55 -23
  2. hikyuu/__init__.pyi +626 -595
  3. hikyuu/analysis/__init__.pyi +589 -563
  4. hikyuu/analysis/analysis.pyi +590 -564
  5. hikyuu/core.py +2 -0
  6. hikyuu/core.pyi +591 -565
  7. hikyuu/cpp/__init__.pyi +2 -2
  8. hikyuu/cpp/core310.pyi +587 -130
  9. hikyuu/cpp/core310.so +0 -0
  10. hikyuu/cpp/core311.pyi +587 -130
  11. hikyuu/cpp/core311.so +0 -0
  12. hikyuu/cpp/core312.pyi +587 -130
  13. hikyuu/cpp/core312.so +0 -0
  14. hikyuu/cpp/core313.pyi +587 -130
  15. hikyuu/cpp/core313.so +0 -0
  16. hikyuu/cpp/i18n/zh_CN/hikyuu.mo +0 -0
  17. hikyuu/cpp/i18n/zh_CN/hikyuu_plugin.mo +0 -0
  18. hikyuu/cpp/libboost_atomic.so +0 -0
  19. hikyuu/cpp/libboost_atomic.so.1.90.0 +0 -0
  20. hikyuu/cpp/libboost_charconv.so +0 -0
  21. hikyuu/cpp/libboost_charconv.so.1.90.0 +0 -0
  22. hikyuu/cpp/libboost_chrono.so +0 -0
  23. hikyuu/cpp/libboost_chrono.so.1.90.0 +0 -0
  24. hikyuu/cpp/libboost_container.so +0 -0
  25. hikyuu/cpp/libboost_container.so.1.90.0 +0 -0
  26. hikyuu/cpp/libboost_date_time.so +0 -0
  27. hikyuu/cpp/libboost_date_time.so.1.90.0 +0 -0
  28. hikyuu/cpp/libboost_locale.so +0 -0
  29. hikyuu/cpp/libboost_locale.so.1.90.0 +0 -0
  30. hikyuu/cpp/libboost_random.so +0 -0
  31. hikyuu/cpp/libboost_random.so.1.90.0 +0 -0
  32. hikyuu/cpp/libboost_serialization.so +0 -0
  33. hikyuu/cpp/libboost_serialization.so.1.90.0 +0 -0
  34. hikyuu/cpp/libboost_thread.so +0 -0
  35. hikyuu/cpp/libboost_thread.so.1.90.0 +0 -0
  36. hikyuu/cpp/libboost_wserialization.so +0 -0
  37. hikyuu/cpp/libboost_wserialization.so.1.90.0 +0 -0
  38. hikyuu/cpp/libhikyuu.so +0 -0
  39. hikyuu/cpp/libhku_hdf5.so +0 -0
  40. hikyuu/cpp/libhku_hdf5.so.200 +0 -0
  41. hikyuu/cpp/libhku_hdf5.so.200.2.0 +0 -0
  42. hikyuu/cpp/libhku_hdf5_cpp.so +0 -0
  43. hikyuu/cpp/libhku_hdf5_cpp.so.200 +0 -0
  44. hikyuu/cpp/libhku_hdf5_cpp.so.200.2.0 +0 -0
  45. hikyuu/cpp/libhku_hdf5_hl.so +0 -0
  46. hikyuu/cpp/libhku_hdf5_hl.so.200 +0 -0
  47. hikyuu/cpp/libhku_hdf5_hl.so.200.1.0 +0 -0
  48. hikyuu/cpp/libhku_hdf5_hl_cpp.so +0 -0
  49. hikyuu/cpp/libhku_hdf5_hl_cpp.so.200 +0 -0
  50. hikyuu/cpp/libhku_hdf5_hl_cpp.so.200.1.0 +0 -0
  51. hikyuu/cpp/libhku_hdf5_tools.so +0 -0
  52. hikyuu/cpp/libhku_hdf5_tools.so.200 +0 -0
  53. hikyuu/cpp/libhku_hdf5_tools.so.200.1.1 +0 -0
  54. hikyuu/cpp/libsqlite3.so +0 -0
  55. hikyuu/data/clickhouse_upgrade/0001.sql +2 -0
  56. hikyuu/data/clickhouse_upgrade/createdb.sql +105 -105
  57. hikyuu/data/common.py +3 -3
  58. hikyuu/data/common_clickhouse.py +1 -3
  59. hikyuu/data/download_block.py +351 -0
  60. hikyuu/data/em_block_to_clickhouse.py +26 -74
  61. hikyuu/data/em_block_to_mysql.py +25 -75
  62. hikyuu/data/em_block_to_sqlite.py +26 -78
  63. hikyuu/data/hku_config_template.py +33 -6
  64. hikyuu/data/mysql_upgrade/0029.sql +2 -0
  65. hikyuu/data/pytdx_to_clickhouse.py +96 -38
  66. hikyuu/data/pytdx_to_h5.py +78 -29
  67. hikyuu/data/pytdx_to_mysql.py +69 -21
  68. hikyuu/data/pytdx_weight_to_clickhouse.py +3 -1
  69. hikyuu/data/pytdx_weight_to_mysql.py +3 -1
  70. hikyuu/data/pytdx_weight_to_sqlite.py +3 -1
  71. hikyuu/data/sqlite_upgrade/0029.sql +4 -0
  72. hikyuu/data/tdx_to_clickhouse.py +2 -2
  73. hikyuu/data/tdx_to_h5.py +11 -11
  74. hikyuu/data/tdx_to_mysql.py +2 -2
  75. hikyuu/data/zh_bond10_to_clickhouse.py +1 -1
  76. hikyuu/draw/__init__.pyi +1 -1
  77. hikyuu/draw/drawplot/__init__.pyi +8 -8
  78. hikyuu/draw/drawplot/bokeh_draw.pyi +610 -583
  79. hikyuu/draw/drawplot/common.pyi +1 -1
  80. hikyuu/draw/drawplot/echarts_draw.pyi +612 -585
  81. hikyuu/draw/drawplot/matplotlib_draw.py +12 -76
  82. hikyuu/draw/drawplot/matplotlib_draw.pyi +623 -596
  83. hikyuu/draw/elder.pyi +11 -11
  84. hikyuu/draw/kaufman.pyi +18 -18
  85. hikyuu/draw/volume.pyi +10 -10
  86. hikyuu/examples/notebook/Demo/Demo1.ipynb +48 -33
  87. hikyuu/extend.py +0 -7
  88. hikyuu/extend.pyi +599 -573
  89. hikyuu/fetcher/stock/zh_block_em.py +12 -40
  90. hikyuu/gui/HikyuuTDX.py +140 -33
  91. hikyuu/gui/data/CollectSpotThread.py +1 -1
  92. hikyuu/gui/data/EscapetimeThread.py +8 -14
  93. hikyuu/gui/data/ImportBlockInfoTask.py +3 -10
  94. hikyuu/gui/data/MainWindow.py +1300 -761
  95. hikyuu/gui/data/SchedImportThread.py +2 -2
  96. hikyuu/gui/data/UsePytdxImportToH5Thread.py +3 -3
  97. hikyuu/gui/data/UseQmtImportToH5Thread.py +2 -2
  98. hikyuu/gui/data/UseTdxImportToH5Thread.py +3 -3
  99. hikyuu/gui/data/tool.py +32 -25
  100. hikyuu/gui/dataserver.py +5 -3
  101. hikyuu/gui/images/liandongxiaopu.png +0 -0
  102. hikyuu/gui/importdata.py +4 -0
  103. hikyuu/hub.pyi +6 -6
  104. hikyuu/include/hikyuu/DataType.h +4 -16
  105. hikyuu/include/hikyuu/KData.h +6 -3
  106. hikyuu/include/hikyuu/KDataPrivatedBufferImp.h +1 -1
  107. hikyuu/include/hikyuu/KDataSharedBufferImp.h +1 -1
  108. hikyuu/include/hikyuu/KQuery.h +2 -2
  109. hikyuu/include/hikyuu/Stock.h +4 -1
  110. hikyuu/include/hikyuu/StockManager.h +29 -4
  111. hikyuu/include/hikyuu/StrategyContext.h +4 -4
  112. hikyuu/include/hikyuu/data_driver/BaseInfoDriver.h +9 -0
  113. hikyuu/include/hikyuu/data_driver/BlockInfoDriver.h +6 -0
  114. hikyuu/include/hikyuu/data_driver/KDataDriver.h +24 -1
  115. hikyuu/include/hikyuu/data_driver/base_info/mysql/MySQLBaseInfoDriver.h +1 -1
  116. hikyuu/include/hikyuu/data_driver/base_info/sqlite/SQLiteBaseInfoDriver.h +1 -1
  117. hikyuu/include/hikyuu/data_driver/block_info/mysql/MySQLBlockInfoDriver.h +2 -1
  118. hikyuu/include/hikyuu/data_driver/block_info/qianlong/QLBlockInfoDriver.h +2 -1
  119. hikyuu/include/hikyuu/data_driver/block_info/sqlite/SQLiteBlockInfoDriver.h +2 -1
  120. hikyuu/include/hikyuu/data_driver/kdata/DoNothingKDataDriver.h +1 -1
  121. hikyuu/include/hikyuu/data_driver/kdata/cvs/KDataTempCsvDriver.h +1 -1
  122. hikyuu/include/hikyuu/data_driver/kdata/hdf5/H5KDataDriver.h +1 -1
  123. hikyuu/include/hikyuu/data_driver/kdata/mysql/MySQLKDataDriver.h +6 -2
  124. hikyuu/include/hikyuu/data_driver/kdata/sqlite/SQLiteKDataDriver.h +2 -2
  125. hikyuu/include/hikyuu/data_driver/kdata/tdx/TdxKDataDriver.h +1 -1
  126. hikyuu/include/hikyuu/global/sysinfo.h +24 -5
  127. hikyuu/include/hikyuu/hikyuu.h +1 -1
  128. hikyuu/include/hikyuu/indicator/IndicatorImp.h +1 -1
  129. hikyuu/include/hikyuu/indicator/build_in.h +1 -0
  130. hikyuu/include/hikyuu/indicator/crt/CYCLE.h +4 -4
  131. hikyuu/include/hikyuu/indicator/crt/HSL.h +2 -2
  132. hikyuu/include/hikyuu/indicator/crt/QUANTILE_TRUNC.h +30 -0
  133. hikyuu/include/hikyuu/indicator/crt/TURNOVER.h +1 -0
  134. hikyuu/include/hikyuu/indicator/crt/ZSCORE.h +2 -2
  135. hikyuu/include/hikyuu/indicator/imp/IQuantileTrunc.h +25 -0
  136. hikyuu/include/hikyuu/lang.h +15 -2
  137. hikyuu/include/hikyuu/misc.h +38 -0
  138. hikyuu/include/hikyuu/plugin/KDataToClickHouseImporter.h +40 -0
  139. hikyuu/include/hikyuu/plugin/KDataToMySQLImporter.h +40 -0
  140. hikyuu/include/hikyuu/plugin/checkdata.h +20 -0
  141. hikyuu/include/hikyuu/plugin/dataserver.h +2 -1
  142. hikyuu/include/hikyuu/plugin/device.h +10 -0
  143. hikyuu/include/hikyuu/plugin/extind.h +40 -0
  144. hikyuu/include/hikyuu/plugin/hkuextra.h +1 -17
  145. hikyuu/include/hikyuu/plugin/interface/CheckDataPluginInterface.h +25 -0
  146. hikyuu/include/hikyuu/plugin/interface/DataServerPluginInterface.h +2 -2
  147. hikyuu/include/hikyuu/plugin/interface/DevicePluginInterface.h +2 -0
  148. hikyuu/include/hikyuu/plugin/interface/ExtendIndicatorsPluginInterface.h +12 -0
  149. hikyuu/include/hikyuu/plugin/interface/HkuExtraPluginInterface.h +1 -13
  150. hikyuu/include/hikyuu/plugin/interface/ImportKDataToClickHousePluginInterface.h +44 -0
  151. hikyuu/include/hikyuu/plugin/interface/ImportKDataToMySQLPluginInterface.h +42 -0
  152. hikyuu/include/hikyuu/plugin/interface/plugins.h +9 -1
  153. hikyuu/include/hikyuu/python/convert_any.h +9 -6
  154. hikyuu/include/hikyuu/python/pybind_utils.h +4 -11
  155. hikyuu/include/hikyuu/strategy/RunSystemInStrategy.h +3 -0
  156. hikyuu/include/hikyuu/strategy/Strategy.h +1 -1
  157. hikyuu/include/hikyuu/trade_manage/Performance.h +4 -4
  158. hikyuu/include/hikyuu/trade_manage/TradeManagerBase.h +10 -2
  159. hikyuu/include/hikyuu/trade_manage/TradeRecord.h +2 -1
  160. hikyuu/include/hikyuu/trade_sys/allocatefunds/AllocateFundsBase.h +0 -1
  161. hikyuu/include/hikyuu/trade_sys/allocatefunds/build_in.h +1 -0
  162. hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/AF_FixedAmount.h +26 -0
  163. hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/FixAmountFunds.h +18 -0
  164. hikyuu/include/hikyuu/trade_sys/condition/ConditionBase.h +0 -1
  165. hikyuu/include/hikyuu/trade_sys/environment/EnvironmentBase.h +0 -1
  166. hikyuu/include/hikyuu/trade_sys/moneymanager/MoneyManagerBase.h +0 -1
  167. hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedCapitalFundsMM.h +0 -4
  168. hikyuu/include/hikyuu/trade_sys/multifactor/MultiFactorBase.h +36 -4
  169. hikyuu/include/hikyuu/trade_sys/multifactor/NormalizeBase.h +124 -0
  170. hikyuu/include/hikyuu/trade_sys/multifactor/ScoresFilterBase.h +124 -0
  171. hikyuu/include/hikyuu/trade_sys/multifactor/build_in.h +3 -0
  172. hikyuu/include/hikyuu/trade_sys/multifactor/buildin_norm.h +36 -0
  173. hikyuu/include/hikyuu/trade_sys/multifactor/buildin_scfilter.h +51 -0
  174. hikyuu/include/hikyuu/trade_sys/multifactor/filter/GroupSCFilter.h +24 -0
  175. hikyuu/include/hikyuu/trade_sys/multifactor/filter/IgnoreLessOrEqualValueSCFilter.h +24 -0
  176. hikyuu/include/hikyuu/trade_sys/multifactor/filter/IgnoreNanSCFilter.h +24 -0
  177. hikyuu/include/hikyuu/trade_sys/multifactor/filter/MinAmountPercentSCFilter.h +25 -0
  178. hikyuu/include/hikyuu/trade_sys/multifactor/filter/PriceSCFilter.h +24 -0
  179. hikyuu/include/hikyuu/trade_sys/multifactor/filter/TopNSCFilter.h +24 -0
  180. hikyuu/include/hikyuu/trade_sys/multifactor/imp/EqualWeightMultiFactor.h +1 -1
  181. hikyuu/include/hikyuu/trade_sys/multifactor/imp/ICIRMultiFactor.h +1 -1
  182. hikyuu/include/hikyuu/trade_sys/multifactor/imp/ICMultiFactor.h +1 -1
  183. hikyuu/include/hikyuu/trade_sys/multifactor/imp/WeightMultiFactor.h +1 -1
  184. hikyuu/include/hikyuu/trade_sys/multifactor/normalize/NormMinMax.h +23 -0
  185. hikyuu/include/hikyuu/trade_sys/multifactor/normalize/NormQuantile.h +28 -0
  186. hikyuu/include/hikyuu/trade_sys/multifactor/normalize/NormQuantileUniform.h +28 -0
  187. hikyuu/include/hikyuu/trade_sys/multifactor/normalize/NormZScore.h +25 -0
  188. hikyuu/include/hikyuu/trade_sys/multifactor/normalize/__init__.py +1 -0
  189. hikyuu/include/hikyuu/trade_sys/multifactor/normalize/quantile_trunc.h +16 -0
  190. hikyuu/include/hikyuu/trade_sys/portfolio/Portfolio.h +20 -13
  191. hikyuu/include/hikyuu/trade_sys/portfolio/imp/SimplePortfolio.h +7 -0
  192. hikyuu/include/hikyuu/trade_sys/portfolio/imp/WithoutAFPortfolio.h +7 -0
  193. hikyuu/include/hikyuu/trade_sys/profitgoal/ProfitGoalBase.h +9 -11
  194. hikyuu/include/hikyuu/trade_sys/selector/SelectorBase.h +49 -1
  195. hikyuu/include/hikyuu/trade_sys/selector/build_in.h +1 -0
  196. hikyuu/include/hikyuu/trade_sys/selector/crt/SE_MultiFactor2.h +40 -0
  197. hikyuu/include/hikyuu/trade_sys/selector/imp/MultiFactorSelector.h +0 -3
  198. hikyuu/include/hikyuu/trade_sys/selector/imp/MultiFactorSelector2.h +49 -0
  199. hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorSelector.h +1 -1
  200. hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorValueSelector.h +1 -1
  201. hikyuu/include/hikyuu/trade_sys/signal/SignalBase.h +0 -1
  202. hikyuu/include/hikyuu/trade_sys/signal/imp/BandSignal2.h +0 -4
  203. hikyuu/include/hikyuu/trade_sys/signal/imp/logic/AddValueSignal.h +2 -2
  204. hikyuu/include/hikyuu/trade_sys/signal/imp/logic/DivValueSignal.h +2 -2
  205. hikyuu/include/hikyuu/trade_sys/signal/imp/logic/MulValueSignal.h +2 -2
  206. hikyuu/include/hikyuu/trade_sys/signal/imp/logic/OperatorSignal.h +1 -1
  207. hikyuu/include/hikyuu/trade_sys/signal/imp/logic/OperatorValueSignal.h +4 -4
  208. hikyuu/include/hikyuu/trade_sys/signal/imp/logic/SubValueSignal.h +2 -2
  209. hikyuu/include/hikyuu/trade_sys/slippage/SlippageBase.h +0 -1
  210. hikyuu/include/hikyuu/trade_sys/slippage/build_in.h +5 -1
  211. hikyuu/include/hikyuu/trade_sys/slippage/crt/SP_LogNormal.h +22 -0
  212. hikyuu/include/hikyuu/trade_sys/slippage/crt/SP_Normal.h +22 -0
  213. hikyuu/include/hikyuu/trade_sys/slippage/crt/SP_TruncNormal.h +25 -0
  214. hikyuu/include/hikyuu/trade_sys/slippage/crt/SP_Uniform.h +23 -0
  215. hikyuu/include/hikyuu/trade_sys/slippage/imp/LogNormalSlippage.h +28 -0
  216. hikyuu/include/hikyuu/trade_sys/slippage/imp/NormalSlippage.h +28 -0
  217. hikyuu/include/hikyuu/trade_sys/slippage/imp/TruncNormalSlippage.h +28 -0
  218. hikyuu/include/hikyuu/trade_sys/slippage/imp/UniformSlippage.h +24 -0
  219. hikyuu/include/hikyuu/trade_sys/stoploss/StoplossBase.h +0 -1
  220. hikyuu/include/hikyuu/trade_sys/system/System.h +15 -3
  221. hikyuu/include/hikyuu/utilities/Log.h +6 -7
  222. hikyuu/include/hikyuu/utilities/Parameter.h +17 -0
  223. hikyuu/include/hikyuu/utilities/SpendTimer.h +17 -7
  224. hikyuu/include/hikyuu/utilities/arithmetic.h +55 -0
  225. hikyuu/include/hikyuu/utilities/config.h +28 -0
  226. hikyuu/include/hikyuu/utilities/db_connect/mysql/MySQLConnect.h +1 -1
  227. hikyuu/include/hikyuu/utilities/db_connect/mysql/MySQLStatement.h +1 -1
  228. hikyuu/include/hikyuu/utilities/db_connect/sqlite/SQLiteConnect.h +1 -1
  229. hikyuu/include/hikyuu/utilities/db_connect/sqlite/SQLiteStatement.h +1 -1
  230. hikyuu/include/hikyuu/utilities/plugin/PluginBase.h +17 -2
  231. hikyuu/include/hikyuu/utilities/plugin/PluginLoader.h +4 -1
  232. hikyuu/include/hikyuu/utilities/plugin/PluginManager.h +41 -22
  233. hikyuu/include/hikyuu/utilities/thread/GlobalStealThreadPool.h +1 -2
  234. hikyuu/include/hikyuu/utilities/thread/GlobalThreadPool.h +1 -1
  235. hikyuu/include/hikyuu/utilities/thread/MQStealThreadPool.h +286 -0
  236. hikyuu/include/hikyuu/utilities/thread/MQThreadPool.h +1 -0
  237. hikyuu/include/hikyuu/utilities/thread/StealThreadPool.h +297 -0
  238. hikyuu/include/hikyuu/utilities/thread/ThreadPool.h +1 -0
  239. hikyuu/include/hikyuu/utilities/thread/WorkStealQueue.h +9 -8
  240. hikyuu/include/hikyuu/utilities/thread/algorithm.h +64 -14
  241. hikyuu/include/hikyuu/version.h +5 -5
  242. hikyuu/plugin/libbacktest.so +0 -0
  243. hikyuu/plugin/libcheckdata.so +0 -0
  244. hikyuu/plugin/libclickhousedriver.so +0 -0
  245. hikyuu/plugin/libdataserver.so +0 -0
  246. hikyuu/{cpp/core39.so → plugin/libdataserver_parquet.so} +0 -0
  247. hikyuu/plugin/libdevice.so +0 -0
  248. hikyuu/plugin/libextind.so +0 -0
  249. hikyuu/plugin/libhkuextra.so +0 -0
  250. hikyuu/plugin/libimport2ch.so +0 -0
  251. hikyuu/plugin/libimport2hdf5.so +0 -0
  252. hikyuu/plugin/libimport2mysql.so +0 -0
  253. hikyuu/plugin/libtmreport.so +0 -0
  254. hikyuu/trade_manage/__init__.pyi +607 -582
  255. hikyuu/trade_manage/broker.pyi +3 -3
  256. hikyuu/trade_manage/broker_easytrader.pyi +1 -1
  257. hikyuu/trade_manage/trade.py +0 -2
  258. hikyuu/trade_manage/trade.pyi +607 -582
  259. hikyuu/trade_sys/trade_sys.py +54 -5
  260. hikyuu/util/__init__.pyi +2 -2
  261. hikyuu/util/singleton.pyi +1 -1
  262. {hikyuu-2.6.8.3.dist-info → hikyuu-2.7.3.dist-info}/METADATA +42 -32
  263. {hikyuu-2.6.8.3.dist-info → hikyuu-2.7.3.dist-info}/RECORD +267 -212
  264. {hikyuu-2.6.8.3.dist-info → hikyuu-2.7.3.dist-info}/top_level.txt +2 -2
  265. hikyuu/cpp/core39.pyi +0 -14190
  266. hikyuu/data/pytdx_to_taos.py +0 -736
  267. hikyuu/data_driver/__init__.py +0 -49
  268. hikyuu/data_driver/jqdata_data_driver.py +0 -277
  269. hikyuu/data_driver/pytdx_data_driver.py +0 -292
  270. hikyuu/fetcher/stock/zh_stock_a_huatai.py +0 -51
  271. hikyuu/fetcher/stock/zh_stock_a_pytdx.py +0 -129
  272. hikyuu/gui/data/CollectToMemThread.py +0 -123
  273. hikyuu/gui/data/CollectToMySQLThread.py +0 -178
  274. hikyuu/gui/start_huatai_insight.py +0 -510
  275. hikyuu/include/hikyuu/views/arrow_common.h +0 -38
  276. hikyuu/include/hikyuu/views/arrow_views.h +0 -117
  277. hikyuu/tools/update_block_info.py +0 -168
  278. /hikyuu/include/hikyuu/{views → trade_sys/multifactor/filter}/__init__.py +0 -0
  279. {hikyuu-2.6.8.3.dist-info → hikyuu-2.7.3.dist-info}/WHEEL +0 -0
  280. {hikyuu-2.6.8.3.dist-info → hikyuu-2.7.3.dist-info}/entry_points.txt +0 -0
@@ -12,6 +12,8 @@
12
12
  #include <vector>
13
13
  #include "ThreadPool.h"
14
14
  #include "MQThreadPool.h"
15
+ #include "StealThreadPool.h"
16
+ #include "MQStealThreadPool.h"
15
17
 
16
18
  //----------------------------------------------------------------
17
19
  // Note: 除 ThreadPool/MQThreadPool 外,其他线程池由于使用
@@ -23,15 +25,17 @@ namespace hku {
23
25
 
24
26
  typedef std::pair<size_t, size_t> range_t;
25
27
 
26
- inline std::vector<range_t> parallelIndexRange(size_t start, size_t end) {
28
+ inline std::vector<range_t> parallelIndexRange(size_t start, size_t end, size_t cpu_num = 0) {
27
29
  std::vector<std::pair<size_t, size_t>> ret;
28
30
  if (start >= end) {
29
31
  return ret;
30
32
  }
31
33
 
32
34
  size_t total = end - start;
33
- size_t cpu_num = std::thread::hardware_concurrency();
34
- if (cpu_num == 1) {
35
+ if (cpu_num == 0) {
36
+ cpu_num = std::thread::hardware_concurrency();
37
+ }
38
+ if (cpu_num <= 1) {
35
39
  ret.emplace_back(start, end);
36
40
  return ret;
37
41
  }
@@ -52,9 +56,13 @@ inline std::vector<range_t> parallelIndexRange(size_t start, size_t end) {
52
56
  }
53
57
 
54
58
  template <typename FunctionType, class TaskGroup = MQThreadPool>
55
- void parallel_for_index_void(size_t start, size_t end, FunctionType f) {
56
- auto ranges = parallelIndexRange(start, end);
57
- TaskGroup tg;
59
+ void parallel_for_index_void(size_t start, size_t end, FunctionType f, int cpu_num = 0) {
60
+ auto ranges = parallelIndexRange(start, end, cpu_num);
61
+ if (ranges.empty()) {
62
+ return;
63
+ }
64
+
65
+ TaskGroup tg(cpu_num == 0 ? std::thread::hardware_concurrency() : cpu_num);
58
66
  for (size_t i = 0, total = ranges.size(); i < total; i++) {
59
67
  tg.submit([=, range = ranges[i]]() {
60
68
  for (size_t ix = range.first; ix < range.second; ix++) {
@@ -67,9 +75,14 @@ void parallel_for_index_void(size_t start, size_t end, FunctionType f) {
67
75
  }
68
76
 
69
77
  template <typename FunctionType, class TaskGroup = MQThreadPool>
70
- auto parallel_for_index(size_t start, size_t end, FunctionType f) {
71
- auto ranges = parallelIndexRange(start, end);
72
- TaskGroup tg;
78
+ auto parallel_for_index(size_t start, size_t end, FunctionType f, size_t cpu_num = 0) {
79
+ std::vector<typename std::invoke_result<FunctionType, size_t>::type> ret;
80
+ auto ranges = parallelIndexRange(start, end, cpu_num);
81
+ if (ranges.empty()) {
82
+ return ret;
83
+ }
84
+
85
+ TaskGroup tg(cpu_num == 0 ? std::thread::hardware_concurrency() : cpu_num);
73
86
  std::vector<std::future<std::vector<typename std::invoke_result<FunctionType, size_t>::type>>>
74
87
  tasks;
75
88
  for (size_t i = 0, total = ranges.size(); i < total; i++) {
@@ -82,7 +95,6 @@ auto parallel_for_index(size_t start, size_t end, FunctionType f) {
82
95
  }));
83
96
  }
84
97
 
85
- std::vector<typename std::invoke_result<FunctionType, size_t>::type> ret;
86
98
  for (auto& task : tasks) {
87
99
  auto one = task.get();
88
100
  for (auto&& value : one) {
@@ -94,15 +106,19 @@ auto parallel_for_index(size_t start, size_t end, FunctionType f) {
94
106
  }
95
107
 
96
108
  template <typename FunctionType, class TaskGroup = MQThreadPool>
97
- auto parallel_for_range(size_t start, size_t end, FunctionType f) {
98
- auto ranges = parallelIndexRange(start, end);
99
- TaskGroup tg;
109
+ auto parallel_for_range(size_t start, size_t end, FunctionType f, size_t cpu_num = 0) {
110
+ typename std::invoke_result<FunctionType, range_t>::type ret;
111
+ auto ranges = parallelIndexRange(start, end, cpu_num);
112
+ if (ranges.empty()) {
113
+ return ret;
114
+ }
115
+
116
+ TaskGroup tg(cpu_num == 0 ? std::thread::hardware_concurrency() : cpu_num);
100
117
  std::vector<std::future<typename std::invoke_result<FunctionType, range_t>::type>> tasks;
101
118
  for (size_t i = 0, total = ranges.size(); i < total; i++) {
102
119
  tasks.emplace_back(tg.submit([func = f, range = ranges[i]]() { return func(range); }));
103
120
  }
104
121
 
105
- typename std::invoke_result<FunctionType, range_t>::type ret;
106
122
  for (auto& task : tasks) {
107
123
  auto one = task.get();
108
124
  for (auto&& value : one) {
@@ -113,4 +129,38 @@ auto parallel_for_range(size_t start, size_t end, FunctionType f) {
113
129
  return ret;
114
130
  }
115
131
 
132
+ template <typename FunctionType, class TaskGroup = ThreadPool>
133
+ void parallel_for_index_void_single(size_t start, size_t end, FunctionType f, int cpu_num = 0) {
134
+ if (start >= end) {
135
+ return;
136
+ }
137
+
138
+ TaskGroup tg(cpu_num == 0 ? std::thread::hardware_concurrency() : cpu_num);
139
+ for (size_t i = start; i < end; i++) {
140
+ tg.submit([func = f, i]() { func(i); });
141
+ }
142
+ tg.join();
143
+ return;
144
+ }
145
+
146
+ template <typename FunctionType, class TaskGroup = ThreadPool>
147
+ auto parallel_for_index_single(size_t start, size_t end, FunctionType f, size_t cpu_num = 0) {
148
+ std::vector<typename std::invoke_result<FunctionType, size_t>::type> ret;
149
+ if (start >= end) {
150
+ return ret;
151
+ }
152
+
153
+ TaskGroup tg(cpu_num == 0 ? std::thread::hardware_concurrency() : cpu_num);
154
+ std::vector<std::future<typename std::invoke_result<FunctionType, size_t>::type>> tasks;
155
+ for (size_t i = start; i < end; i++) {
156
+ tasks.emplace_back(tg.submit([func = f, i]() { return func(i); }));
157
+ }
158
+
159
+ for (auto& task : tasks) {
160
+ ret.push_back(std::move(task.get()));
161
+ }
162
+
163
+ return ret;
164
+ }
165
+
116
166
  } // namespace hku
@@ -12,13 +12,13 @@
12
12
  #define HKU_VERSION_H
13
13
 
14
14
  // clang-format off
15
- #define HKU_VERSION "2.6.8"
15
+ #define HKU_VERSION "2.7.3"
16
16
  #define HKU_VERSION_MAJOR 2
17
- #define HKU_VERSION_MINOR 6
18
- #define HKU_VERSION_ALTER 8
19
- #define HKU_VERSION_BUILD 202509080133
17
+ #define HKU_VERSION_MINOR 7
18
+ #define HKU_VERSION_ALTER 3
19
+ #define HKU_VERSION_BUILD 202601060312
20
20
  #define HKU_VERSION_MODE "RELEASE"
21
- #define HKU_VERSION_GIT "2.6.8 master.be797426 (RELEASE)"
21
+ #define HKU_VERSION_GIT "2.7.3 release.9c144edf (RELEASE)"
22
22
  // clang-format on
23
23
 
24
24
  #endif /* HKU_VERSION_H */
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file