cloudpss 4.5.16__tar.gz → 4.5.18__tar.gz

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 (117) hide show
  1. {cloudpss-4.5.16 → cloudpss-4.5.18}/PKG-INFO +1 -1
  2. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/job/job.py +7 -3
  3. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/job/messageStreamReceiver.py +0 -1
  4. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/model/implements/diagram.py +1 -1
  5. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/runner/runner.py +7 -3
  6. cloudpss-4.5.18/cloudpss/utils/parseDebugArgs.py +93 -0
  7. cloudpss-4.5.18/cloudpss/version.py +1 -0
  8. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss.egg-info/PKG-INFO +1 -1
  9. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss.egg-info/SOURCES.txt +3 -0
  10. cloudpss-4.5.18/test/test2.py +56 -0
  11. cloudpss-4.5.18/test/test_TCP.py +31 -0
  12. cloudpss-4.5.16/cloudpss/version.py +0 -1
  13. {cloudpss-4.5.16 → cloudpss-4.5.18}/README.md +0 -0
  14. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/__init__.py +0 -0
  15. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/asyncio/__init__.py +0 -0
  16. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/asyncio/job/__init__.py +0 -0
  17. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/asyncio/job/job.py +0 -0
  18. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/asyncio/job/messageStreamReceiver.py +0 -0
  19. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/asyncio/job/messageStreamSender.py +0 -0
  20. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/asyncio/model/__init__.py +0 -0
  21. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/asyncio/model/model.py +0 -0
  22. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/asyncio/model/revision.py +0 -0
  23. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/asyncio/model/topology.py +0 -0
  24. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/asyncio/utils/AsyncIterable.py +0 -0
  25. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/asyncio/utils/__init__.py +0 -0
  26. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/asyncio/utils/httpAsyncRequest.py +0 -0
  27. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/dslab/__init__.py +0 -0
  28. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/dslab/dataManageModel.py +0 -0
  29. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/dslab/dslab.py +0 -0
  30. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/dslab/files/__init__.py +0 -0
  31. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/dslab/files/curveData.py +0 -0
  32. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/dslab/files/files.py +0 -0
  33. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/dslab/financialAnalysisModel.py +0 -0
  34. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/function/__init__.py +0 -0
  35. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/function/function.py +0 -0
  36. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/function/functionExecution.py +0 -0
  37. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/function/job.py +0 -0
  38. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/ieslab/DataManageModel.py +0 -0
  39. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/ieslab/EvaluationModel.py +0 -0
  40. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/ieslab/IESLabOpt.py +0 -0
  41. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/ieslab/IESLabPlan.py +0 -0
  42. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/ieslab/IESLabSimulation.py +0 -0
  43. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/ieslab/PlanModel.py +0 -0
  44. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/ieslab/__init__.py +0 -0
  45. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/job/TemplateCompiler.py +0 -0
  46. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/job/TemplateManager.py +0 -0
  47. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/job/__init__.py +0 -0
  48. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/job/jobReceiver.py +0 -0
  49. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/job/messageStreamSender.py +0 -0
  50. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/job/result/EMTResult.py +0 -0
  51. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/job/result/IESLabSimulationResult.py +0 -0
  52. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/job/result/IESLabTypicalDayResult.py +0 -0
  53. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/job/result/IESResult.py +0 -0
  54. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/job/result/PowerFlowResult.py +0 -0
  55. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/job/result/__init__.py +0 -0
  56. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/job/result/result.py +0 -0
  57. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/model/__init__.py +0 -0
  58. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/model/implements/__init__.py +0 -0
  59. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/model/implements/component.py +0 -0
  60. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/model/implements/implement.py +0 -0
  61. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/model/jobDefinitions.py +0 -0
  62. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/model/model.py +0 -0
  63. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/model/revision.py +0 -0
  64. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/model/topology.py +0 -0
  65. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/project/__init__.py +0 -0
  66. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/project/project.py +0 -0
  67. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/runner/DSLabResult.py +0 -0
  68. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/runner/IESLabEvaluationResult.py +0 -0
  69. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/runner/IESLabPlanResult.py +0 -0
  70. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/runner/IESLabTypicalDayResult.py +0 -0
  71. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/runner/MessageStreamReceiver.py +0 -0
  72. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/runner/__init__.py +0 -0
  73. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/runner/receiver.py +0 -0
  74. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/runner/result.py +0 -0
  75. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/runner/storage.py +0 -0
  76. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/runner/transform.py +0 -0
  77. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/utils/IO.py +0 -0
  78. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/utils/__init__.py +0 -0
  79. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/utils/dataEncoder.py +0 -0
  80. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/utils/graphqlUtil.py +0 -0
  81. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/utils/httprequests.py +0 -0
  82. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/utils/matlab.py +0 -0
  83. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/utils/yamlLoader.py +0 -0
  84. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss/verify.py +0 -0
  85. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss.egg-info/dependency_links.txt +0 -0
  86. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss.egg-info/requires.txt +0 -0
  87. {cloudpss-4.5.16 → cloudpss-4.5.18}/cloudpss.egg-info/top_level.txt +0 -0
  88. {cloudpss-4.5.16 → cloudpss-4.5.18}/setup.cfg +0 -0
  89. {cloudpss-4.5.16 → cloudpss-4.5.18}/setup.py +0 -0
  90. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test-async.py +0 -0
  91. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test-async2.py +0 -0
  92. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test-async3.py +0 -0
  93. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test-plot.py +0 -0
  94. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test-plot1.py +0 -0
  95. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test-sdk.py +0 -0
  96. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test-sdk1.py +0 -0
  97. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test-snapshot.py +0 -0
  98. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test-topology.py +0 -0
  99. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test-topology1.py +0 -0
  100. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test-yield.py +0 -0
  101. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test.py +0 -0
  102. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test11.py +0 -0
  103. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test12.py +0 -0
  104. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test7950.py +0 -0
  105. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/testAsync.py +0 -0
  106. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/testEvent.py +0 -0
  107. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/testRt-test.py +0 -0
  108. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/testRt.py +0 -0
  109. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/testRt2.py +0 -0
  110. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/testSend.py +0 -0
  111. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test_in_new_web_1.py +0 -0
  112. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test_modepower_ampratio(3).py +0 -0
  113. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test_ws.py +0 -0
  114. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test_ws2.py +0 -0
  115. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/test_ws3.py +0 -0
  116. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/testb.py +0 -0
  117. {cloudpss-4.5.16 → cloudpss-4.5.18}/test/testkey.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudpss
3
- Version: 4.5.16
3
+ Version: 4.5.18
4
4
  Summary: cloudpss sdk
5
5
  Home-page: https://www.cloudpss.net
6
6
  Author: cloudpss
@@ -4,6 +4,7 @@ import re
4
4
  import time
5
5
 
6
6
  from cloudpss.job.result.result import Result
7
+ from cloudpss.utils.parseDebugArgs import parse_debug_args
7
8
  from .result import getResultClass
8
9
 
9
10
  from cloudpss.utils.IO import IO
@@ -134,9 +135,12 @@ class Job(Generic[T]):
134
135
  debug = job["args"].get("@debug", None )
135
136
  debugargs={}
136
137
  if debug is not None:
137
- t= [ i.split('=') for i in re.split(r'\s+',debug) if i.find('=')>0]
138
- for i in t:
139
- debugargs[i[0]]=i[1]
138
+ parsed = parse_debug_args(debug)
139
+ if parsed is not None:
140
+ debugargs = parsed
141
+ # t= [ i.split('=') for i in re.split(r'\s+',debug) if i.find('=')>0]
142
+ # for i in t:
143
+ # debugargs[i[0]]=i[1]
140
144
  context=[
141
145
  function,
142
146
  f"model/@sdk/{str(int(time.time() * random.random()))}",
@@ -27,7 +27,6 @@ class MessageStreamReceiver(JobReceiver):
27
27
  def __init__(self, output,**kwargs):
28
28
  super().__init__()
29
29
  self.id = output
30
- print(kwargs)
31
30
  self.origin = kwargs.get("baseUrl",None)
32
31
  if self.origin is None:
33
32
  self.origin =os.environ.get("CLOUDPSS_API_URL", "https://cloudpss.net/")
@@ -73,7 +73,7 @@ class DiagramImplement(object):
73
73
 
74
74
  >>>> diagram.addComponent(args)
75
75
  """
76
- id = "comp_" + str(uuid.uuid4())
76
+ id = "comp_" + str(uuid.uuid4()).replace("-", "_")
77
77
  shape = "diagram-component"
78
78
  definition = definition
79
79
  label = label or definition
@@ -7,6 +7,7 @@ import random
7
7
  from deprecated import deprecated
8
8
 
9
9
  from cloudpss.utils.graphqlUtil import graphql_request
10
+ from cloudpss.utils.parseDebugArgs import parse_debug_args
10
11
  from .receiver import Receiver
11
12
  from .MessageStreamReceiver import MessageStreamReceiver
12
13
  from .result import IESLabSimulationResult, PowerFlowResult, EMTResult, Result, IESResult
@@ -164,9 +165,12 @@ class Runner(Generic[T]):
164
165
  debug = job["args"].get("@debug", None )
165
166
  debugargs={}
166
167
  if debug is not None:
167
- t= [ i.split('=') for i in re.split(r'\s+',debug) if i.find('=')>0]
168
- for i in t:
169
- debugargs[i[0]]=i[1]
168
+ parsed = parse_debug_args(debug)
169
+ if parsed is not None:
170
+ debugargs = parsed
171
+ # t= [ i.split('=') for i in re.split(r'\s+',debug) if i.find('=')>0]
172
+ # for i in t:
173
+ # debugargs[i[0]]=i[1]
170
174
 
171
175
  context= [
172
176
  function,
@@ -0,0 +1,93 @@
1
+ def parse_debug_args(debug=None):
2
+ if not debug or not isinstance(debug, str):
3
+ return None
4
+
5
+ tokens = []
6
+
7
+ # 1. 先按照非转义的空格拆分字符串,获取每个 token
8
+ current_token = ''
9
+ escaping = False # 表示当前是否在处理转义字符
10
+
11
+ for char in debug:
12
+ if escaping:
13
+ # 如果上一个字符是 '\',则把当前字符直接添加到 token,并保留 '\' 以供二阶段使用
14
+ current_token += '\\' + char
15
+ escaping = False
16
+ elif char == '\\':
17
+ # 开始转义
18
+ escaping = True
19
+ elif char.isspace():
20
+ # 如果遇到空格 (并且不在转义状态),说明一个 token 结束
21
+ if current_token:
22
+ tokens.append(current_token)
23
+ current_token = ''
24
+ else:
25
+ # 普通字符,直接添加
26
+ current_token += char
27
+
28
+ # 最后一个 token 加入数组(如果有的话)
29
+ if current_token:
30
+ tokens.append(current_token)
31
+
32
+ if not tokens:
33
+ return None
34
+
35
+ # 2. 对每个 token,找第一个非转义的 '=' 分割 key/value
36
+ entries = []
37
+
38
+ for token in tokens:
39
+ key = ''
40
+ value = ''
41
+ has_equal = False
42
+ escaping = False
43
+
44
+ # 我们只需要区分第一处真正的 '='
45
+ for char in token:
46
+ if escaping:
47
+ # 处理转义字符
48
+ if char == 'b':
49
+ escaped_char = '\b'
50
+ elif char == 'f':
51
+ escaped_char = '\f'
52
+ elif char == 'n':
53
+ escaped_char = '\n'
54
+ elif char == 'r':
55
+ escaped_char = '\r'
56
+ elif char == 't':
57
+ escaped_char = '\t'
58
+ elif char == 'v':
59
+ escaped_char = '\v'
60
+ else:
61
+ escaped_char = char
62
+
63
+ # 直接添加当前字符
64
+ if not has_equal:
65
+ key += escaped_char
66
+ else:
67
+ if escaped_char in ['\\', '$']:
68
+ # 保留转义字符
69
+ value += '\\' + escaped_char
70
+ else:
71
+ value += escaped_char
72
+ escaping = False
73
+ elif char == '\\':
74
+ escaping = True
75
+ elif char == '=' and not has_equal:
76
+ # 遇到第一个非转义的 '=' 时,视为 key/value 分隔
77
+ has_equal = True
78
+ else:
79
+ # 普通字符
80
+ if not has_equal:
81
+ key += char
82
+ else:
83
+ value += char
84
+
85
+ # 添加 key 和 value 到 entries 列表
86
+ entries.append((key, value))
87
+
88
+ return dict(entries)
89
+
90
+ # 示例用法
91
+ # debug_str = r"TASK_CMD=cloudpssrun:mkl DOCKER_MOUNT=/dev/disk/by-id:/dev/disk/by-id:ro\n/home/cloudpss/NR_ADPSS_HVDC37.key:/usr/include/NR_ADPSS_HVDC37.key:ro\n"
92
+ # result = parse_debug_args(debug_str)
93
+ # print(result)
@@ -0,0 +1 @@
1
+ __version__ = '4.5.18'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudpss
3
- Version: 4.5.16
3
+ Version: 4.5.18
4
4
  Summary: cloudpss sdk
5
5
  Home-page: https://www.cloudpss.net
6
6
  Author: cloudpss
@@ -80,6 +80,7 @@ cloudpss/utils/dataEncoder.py
80
80
  cloudpss/utils/graphqlUtil.py
81
81
  cloudpss/utils/httprequests.py
82
82
  cloudpss/utils/matlab.py
83
+ cloudpss/utils/parseDebugArgs.py
83
84
  cloudpss/utils/yamlLoader.py
84
85
  test/test-async.py
85
86
  test/test-async2.py
@@ -95,6 +96,7 @@ test/test-yield.py
95
96
  test/test.py
96
97
  test/test11.py
97
98
  test/test12.py
99
+ test/test2.py
98
100
  test/test7950.py
99
101
  test/testAsync.py
100
102
  test/testEvent.py
@@ -102,6 +104,7 @@ test/testRt-test.py
102
104
  test/testRt.py
103
105
  test/testRt2.py
104
106
  test/testSend.py
107
+ test/test_TCP.py
105
108
  test/test_in_new_web_1.py
106
109
  test/test_modepower_ampratio(3).py
107
110
  test/test_ws.py
@@ -0,0 +1,56 @@
1
+ import sys,os
2
+ sys.path.append(os.path.join(os.path.dirname(__file__), '../'))
3
+ import cloudpss
4
+ import json
5
+ import time
6
+ # import plotly.graph_objects as go # 使用 plotly 绘制曲线
7
+ import numpy as np
8
+ # from csv_write_function import csv_write_function
9
+
10
+
11
+ # 仿真设置
12
+ # 填写 token,注意不要加大括号{}
13
+ # cloudpss.setToken('{token}')
14
+ cloudpss.setToken('eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NjM4LCJ1c2VybmFtZSI6IkNfeWFuamlvbmdjaGVuZyIsInNjb3BlcyI6WyJtb2RlbDo5ODM2NyIsImZ1bmN0aW9uOjk4MzY3IiwiYXBwbGljYXRpb246MzI4MzEiXSwicm9sZXMiOlsiQ195YW5qaW9uZ2NoZW5nIl0sInR5cGUiOiJhcHBseSIsImV4cCI6MTc3NTMwODY0Miwibm90ZSI6IllKQy10b2tlbiIsImlhdCI6MTc0NDIwNDY0Mn0.H_BdzcOh-MBFMTddb35fNXSe2TAOCgoo2E6RC4mex5k06ouD8GuT0Y60yzCXsR1jsU7YKj6x00KU2OCElg7FQQ')
15
+
16
+ # 设置访问的地址,即登录后的地址到.net/为止
17
+ os.environ['CLOUDPSS_API_URL'] = 'http://cloudpss-nari.ddns.cloudpss.net/'
18
+
19
+ # 选择算例,获取指定算例 rid 的项目
20
+ model = cloudpss.Model.fetch('model/C_yanjiongcheng/Qingdong-DC-simple') # 注意最后那个#号不要加,写完项目名称即可。
21
+
22
+
23
+ rid=model.rid
24
+ configs=model.configs
25
+ jobs=model.jobs
26
+ print('model的rid为', rid)
27
+ print('model的config为', configs)
28
+ print('model的jobs为', jobs)
29
+
30
+ # 选择参数方案,若未设置,则默认用 model 的第一个 config(参数方案)
31
+ config = model.configs[0] # Kes1.1
32
+
33
+ # 选择计算方案,若未设置,则默认用 model 的第一个 job,此处选择 jobs[0],为SimStudio中设置的第1个计算方案,即“图A”
34
+ job = model.jobs[0]
35
+
36
+ # 启动计算任务
37
+ time1 = time.time() # 计算当前的秒数
38
+ runner = model.runPowerFlow(job, config) # 运行计算方案
39
+
40
+ # 监听计算任务实例的运行状态
41
+ while not runner.status():
42
+ logs = runner.result.getLogs() # 获得运行日志
43
+ for log in logs:
44
+ print(log) # 打印每一条日志
45
+ # 每隔一秒判断一次运行状态
46
+ time.sleep(1)
47
+ print('end') # 运行结束
48
+
49
+ time2 = time.time() # 计算当前的秒数
50
+ print('潮流计算花费的时间为 %.2f 秒' % (time2 - time1))
51
+ print(cloudpss.__version__)
52
+
53
+ # 获取潮流计算结果
54
+ buses = runner.result.getBuses() # 获取节点电压计算结果
55
+ # print(buses)
56
+
@@ -0,0 +1,31 @@
1
+ import socket
2
+
3
+ def tcp_client():
4
+ host = '10.101.10.102' # 服务器 IP 地址
5
+ port = 8802 # 服务器端口
6
+
7
+ # 创建 socket 对象
8
+ client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
9
+
10
+ try:
11
+ # 连接到服务器
12
+ client_socket.connect((host, port))
13
+ print(f"已连接到服务器 {host}:{port}")
14
+ # 接收服务器返回的数据
15
+ while True:
16
+ rec_msg = client_socket.recv(1024)
17
+ hex_representation = ' '.join(f'{byte:02x}' for byte in rec_msg)
18
+ print(' 客户端消息的十六进制表示: ', hex_representation)
19
+ # print(f"接收到来自服务器的消息: {data.decode()}")
20
+
21
+ client_socket.send(rec_msg)
22
+
23
+ except ConnectionRefusedError:
24
+ print("连接失败,服务器可能未启动。")
25
+ finally:
26
+ # 关闭连接
27
+ client_socket.close()
28
+ print("客户端已关闭连接。")
29
+
30
+ if __name__ == '__main__':
31
+ tcp_client()
@@ -1 +0,0 @@
1
- __version__ = '4.5.16'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes