Completed
Push — master ( cc2800...40418d )
by Marek
15s queued 13s
created

main_ai_pool.runAIPool()   B

Complexity

Conditions 6

Size

Total Lines 45
Code Lines 36

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
eloc 36
nop 1
dl 0
loc 45
rs 8.0826
c 0
b 0
f 0
1
#
2
#  Copyright 2001 - 2016 Ludek Smid [http://www.ospace.net/]
3
#
4
#  This file is part of Outer Space.
5
#
6
#  Outer Space is free software; you can redistribute it and/or modify
7
#  it under the terms of the GNU General Public License as published by
8
#  the Free Software Foundation; either version 2 of the License, or
9
#  (at your option) any later version.
10
#
11
#  Outer Space is distributed in the hope that it will be useful,
12
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
#  GNU General Public License for more details.
15
#
16
#  You should have received a copy of the GNU General Public License
17
#  along with Outer Space; if not, write to the Free Software
18
#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
#
20
21
from main_ai import runAIClient
22
23
def runAIPool(options):
24
    import copy
25
    import sys
26
    import os
27
    import time
28
    import tempfile
29
    import traceback
30
    import multiprocessing
31
    import re
32
    import copy
33
34
    from ai_parser import AIList
35
36
37
    games = []
38
    if options.game:
39
        games.append(options.game)
40
    else:
41
        # support for games autodetect is not implemented
42
        raise NotImplementedError
43
44
    aiPool = multiprocessing.Pool(processes = options.procs)
45
46
    results = []
47
    for gameName in games:
48
        aiList = AIList(options.configDir)
49
        for record in aiList.getAll():
50
            optAI = copy.copy(options)
51
            optAI.configDir = os.path.join(options.configDir, 'ai_data', gameName)
52
            optAI.login = record.login
53
            optAI.password = record.password
54
            optAI.ai = record.aiType
55
            optAI.game = gameName
56
            optAI.test = False
57
            results.append(aiPool.apply_async(runAIClient, [optAI]))
58
    aiPool.close()
59
    for result in results:
60
        try:
61
            result.get()
62
        except Exception as exc:
63
            # having pass or continue here prevents exception from being printed
64
            # What the actual hell?
65
            True
66
    aiPool.join()
67
    sys.exit()
68
69