Commit bfbf3e56167b0f8650cbbffcddd4bb4a9281adf6
1 parent
3df2cc2b
Exists in
master
and in
68 other branches
ENH: Memory predict in the Linux and enhancemented Windows #76
Showing
1 changed file
with
34 additions
and
69 deletions
Show diff stats
invesalius/utils.py
... | ... | @@ -22,6 +22,9 @@ import subprocess |
22 | 22 | import re |
23 | 23 | import sys |
24 | 24 | |
25 | +if sys.platform == 'win32': | |
26 | + import wmi | |
27 | + | |
25 | 28 | |
26 | 29 | def debug(error_str): |
27 | 30 | from project import Project |
... | ... | @@ -95,7 +98,8 @@ def PredictingMemory(qtd, x, y, p): |
95 | 98 | |
96 | 99 | if (sys.platform == 'win32'): |
97 | 100 | |
98 | - physical_memory = GetWindowsInformation()[3] | |
101 | + #physical_memory in Byte | |
102 | + physical_memory = GetWindowsInformation()[0] | |
99 | 103 | |
100 | 104 | if (platform.architecture()[0] == '32bit'): |
101 | 105 | #(314859200 = 300 MB) |
... | ... | @@ -109,14 +113,18 @@ def PredictingMemory(qtd, x, y, p): |
109 | 113 | return (x, y) |
110 | 114 | else: #64 bits architecture |
111 | 115 | |
112 | - if (physical_memory <= 2.0) and (qtd <= 1200): | |
113 | - porcent = 1.5 + (m - 314859200) / 26999999 * 0.02 | |
116 | + #2147483648 byte = 2.0 GB | |
117 | + #4294967296 byte = 4.0 GB | |
114 | 118 | |
115 | - elif(physical_memory <= 2.0) and (qtd > 1200): | |
116 | - porcent = 1.5 + (m - 314859200) / 26999999 * 0.03 | |
119 | + if (physical_memory <= 2147483648) and (qtd <= 1200): | |
120 | + porcent = 1.5 + (m - 314859200) / 26999999 * 0.04 | |
117 | 121 | |
118 | - elif(physical_memory > 2.0) and (physical_memory <= 4.0) and (qtd <= 1200): | |
119 | - porcent = 1.5 + (m - 314859200) / 26999999 * 0.01 | |
122 | + elif(physical_memory <= 2147483648) and (qtd > 1200): | |
123 | + porcent = 1.5 + (m - 314859200) / 26999999 * 0.05 | |
124 | + | |
125 | + elif(physical_memory > 2147483648) and \ | |
126 | + (physical_memory <= 4294967296) and (qtd <= 1200): | |
127 | + porcent = 1.5 + (m - 314859200) / 26999999 * 0.02 | |
120 | 128 | |
121 | 129 | else: |
122 | 130 | return (x,y) |
... | ... | @@ -125,22 +133,22 @@ def PredictingMemory(qtd, x, y, p): |
125 | 133 | |
126 | 134 | elif(sys.platform == 'linux2'): |
127 | 135 | |
128 | - physical_memory = GetLinuxInformation()[2] | |
136 | + physical_memory = GetLinuxInformation()[0] | |
129 | 137 | |
130 | 138 | if (platform.architecture()[0] == '32bit'): |
131 | 139 | # 839000000 = 800 MB |
132 | - if (m <= 839000000) and (physical_memory <= 2.0): | |
140 | + if (m <= 839000000) and (physical_memory <= 2147483648): | |
133 | 141 | return (x,y) |
134 | - elif (m > 839000000) and (physical_memory <= 2.0) and (qtd <= 1200): | |
142 | + elif (m > 839000000) and (physical_memory <= 2147483648) and (qtd <= 1200): | |
135 | 143 | porcent = 1.5 + (m - 314859200) / 26999999 * 0.02 |
136 | 144 | else: |
137 | 145 | return (x,y) |
138 | 146 | |
139 | 147 | else: |
140 | 148 | |
141 | - if (m <= 839000000) and (physical_memory <= 2.0): | |
149 | + if (m <= 839000000) and (physical_memory <= 2147483648): | |
142 | 150 | return (x, y) |
143 | - elif (m > 839000000) and (physical_memory <= 2.0) and (qtd <= 1200): | |
151 | + elif (m > 839000000) and (physical_memory <= 2147483648) and (qtd <= 1200): | |
144 | 152 | porcent = 1.5 + (m - 314859200) / 26999999 * 0.02 |
145 | 153 | else: |
146 | 154 | return (x,y) |
... | ... | @@ -148,17 +156,7 @@ def PredictingMemory(qtd, x, y, p): |
148 | 156 | return (x/porcent, y/porcent) |
149 | 157 | |
150 | 158 | elif(sys.platform == 'darwin'): |
151 | - | |
152 | - physical_memory = GetDarwinInformation() | |
153 | - | |
154 | - if (m <= 839000000) and (physical_memory <= 2.0): | |
155 | - return (x, y) | |
156 | - elif (m > 839000000) and (physical_memory <= 2.0) and (qtd <= 1200): | |
157 | - porcent = 1.5 + (m - 314859200) / 26999999 * 0.02 | |
158 | - else: | |
159 | - return (x, y) | |
160 | - | |
161 | - return (x/porcent,y/porcent) | |
159 | + return (x/2,y/2) | |
162 | 160 | |
163 | 161 | |
164 | 162 | |
... | ... | @@ -174,42 +172,14 @@ def BytesConvert(bytes): |
174 | 172 | |
175 | 173 | |
176 | 174 | def GetWindowsInformation(): |
175 | + computer = wmi.WMI() | |
176 | + for i in computer.Win32_ComputerSystem (): | |
177 | + memory = int(i.TotalPhysicalMemory) | |
177 | 178 | |
178 | - command = "systeminfo" | |
179 | - | |
180 | - startupinfo = subprocess.STARTUPINFO() | |
181 | - startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW | |
182 | - info = subprocess.Popen([command], startupinfo=startupinfo, | |
183 | - stdout=subprocess.PIPE).communicate() | |
179 | + information = (memory,) | |
184 | 180 | |
185 | - lines = info[0].splitlines() | |
181 | + return information | |
186 | 182 | |
187 | - #Architecture of the system, x86 or x64 | |
188 | - architecture = lines[14] | |
189 | - architecture = re.findall('[0-9]+', architecture)[0] | |
190 | - architecture = "x" + architecture | |
191 | - | |
192 | - #Number of processors or number of nucleus | |
193 | - number_processors = lines[15] | |
194 | - number_processors = re.findall('[0-9]+', number_processors)[0] | |
195 | - | |
196 | - #Clock of the processor in Mhz | |
197 | - processor_clock = lines[16] | |
198 | - processor_clock = re.findall('~[0-9]+', processor_clock)[0] | |
199 | - processor_clock = float(re.findall('[0-9]+', processor_clock)[0]) | |
200 | - | |
201 | - #Total of Physical Memory in MB | |
202 | - total_physical_memory = lines[24 + (int(number_processors) - 1)] | |
203 | - total_physical_memory = float(re.findall('[0-9.]+', total_physical_memory)[0]) | |
204 | - | |
205 | - #Total of Physical Memory Avaliable in MB | |
206 | - available_physical_memory = lines[25 + (int(number_processors) - 1)] | |
207 | - available_physical_memory = float(re.findall('[0-9.]+', | |
208 | - available_physical_memory)[0]) | |
209 | - | |
210 | - return (architecture, number_processors, | |
211 | - processor_clock, total_physical_memory, | |
212 | - available_physical_memory) | |
213 | 183 | |
214 | 184 | def GetDarwinInformation(): |
215 | 185 | memory = 2.0 |
... | ... | @@ -217,19 +187,14 @@ def GetDarwinInformation(): |
217 | 187 | |
218 | 188 | |
219 | 189 | def GetLinuxInformation(): |
220 | - | |
221 | - #Architecture of the system, x86 or x64 | |
222 | - architecture = LinuxCommand("uname -m") | |
223 | - architecture = architecture[0].splitlines()[0] | |
224 | - | |
225 | - #Clock of the processor in Mhz | |
226 | - processor_clock = LinuxCommand("more /proc/cpuinfo") | |
227 | - processor_clock = processor_clock[0].splitlines() | |
228 | - processor_clock = float(re.findall('[0-9.]+', processor_clock[6])[0]) | |
229 | - | |
230 | - | |
231 | - #processor_clock = float(re.findall('[0-9]+', processor_clock)[0]) | |
232 | - return (architecture, processor_clock, 2.0) | |
190 | + #Getting memory | |
191 | + with open('/proc/meminfo') as f: | |
192 | + for i in f: | |
193 | + if i.startswith('MemTotal'): | |
194 | + # To translate from KB to Bytes | |
195 | + mem = int(i.split()[1]) * 1024 | |
196 | + | |
197 | + return (mem,) | |
233 | 198 | |
234 | 199 | |
235 | 200 | def LinuxCommand(command): | ... | ... |