Overview
Comment: | [server] use multiprocessing option |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | server |
Files: | files | file ages | folders |
SHA3-256: |
1cbca91ea69564e371c645d54c75c0cc |
User & Date: | olr on 2019-05-29 14:55:19 |
Original Comment: | [server] use multiprocessing, + code clarification |
Other Links: | manifest | tags |
Context
2019-05-31
| ||
10:09 | [fr] nr + faux positifs + ajustements check-in: ef2a25e748 user: olr tags: trunk, fr | |
2019-05-29
| ||
14:55 | [server] use multiprocessing option check-in: 1cbca91ea6 user: olr tags: trunk, server | |
14:33 | [server] multiprocessing option (accidental commit) check-in: dccaa66ea5 user: olr tags: trunk, server | |
Changes
Modified grammalecte-server.py from [567790a638] to [b6191d794b].
︙ | ︙ | |||
26 27 28 29 30 31 32 | oTextFormatter = oGrammarChecker.getTextFormatter() oGCE = oGrammarChecker.getGCEngine() xProcessPoolExecutor = None | | < | > > | | | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | oTextFormatter = oGrammarChecker.getTextFormatter() oGCE = oGrammarChecker.getGCEngine() xProcessPoolExecutor = None def initExecutor (nMultiCPU=None): "process pool executor initialisation" global xProcessPoolExecutor nMaxCPU = max(os.cpu_count()-1, 1) if nMultiCPU is None or not (1 <= nMultiCPU <= nMaxCPU): nMultiCPU = nMaxCPU print("CPU processes used for workers: ", nMultiCPU) xProcessPoolExecutor = concurrent.futures.ProcessPoolExecutor(max_workers=nMultiCPU) def parseText (sText, dOptions=None, bFormatText=False, sError=""): "parse <sText> and return errors in a JSON format" sJSON = '{ "program": "grammalecte-fr", "version": "'+oGCE.version+'", "lang": "'+oGCE.lang+'", "error": "'+sError+'", "data" : [\n' sDataJSON = "" for i, sParagraph in enumerate(txt.getParagraph(sText), 1): |
︙ | ︙ | |||
292 293 294 295 296 297 298 | except KeyError: traceback.print_exc() return False #### START #### | | > > > | > | 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 | except KeyError: traceback.print_exc() return False #### START #### def main (sHost="localhost", nPort=8080, dOptions=None, bTestPage=False, nMultiCPU=None): "start server" global TESTPAGE global HOMEPAGE if bTestPage: TESTPAGE = True HOMEPAGE = HOMEPAGE.replace("{SERVER_PORT}", str(nPort)) if dOptions: oGCE.setOptions(dOptions) # Python version print("Python: " + sys.version) # Grammalecte echo("Grammalecte v{}".format(oGCE.version)) oGCE.displayOptions() # Process Pool Executor initExecutor(nMultiCPU) # Server (Bottle) run(app, host=sHost, port=nPort) if __name__ == '__main__': xParser = argparse.ArgumentParser() #xParser.add_argument("lang", type=str, nargs='+', help="lang project to generate (name of folder in /lang)") xParser.add_argument("-ht", "--host", help="host (default: localhost)", type=str) |
︙ | ︙ | |||
329 330 331 332 333 334 335 | if xArgs.opt_on or xArgs.opt_off: dOpt = {} if xArgs.opt_on: dOpt = { opt:True for opt in xArgs.opt_on } if xArgs.opt_off: dOpt.update({ opt:False for opt in xArgs.opt_off }) | < < | 334 335 336 337 338 339 340 341 342 343 344 345 | if xArgs.opt_on or xArgs.opt_off: dOpt = {} if xArgs.opt_on: dOpt = { opt:True for opt in xArgs.opt_on } if xArgs.opt_off: dOpt.update({ opt:False for opt in xArgs.opt_off }) main(xArgs.host or "localhost", \ xArgs.port or 8080, \ dOpt, xArgs.test_page, xArgs.multiprocessor) |