Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleChecker.py

changeset 4221
c9fdc07753a7
parent 4218
f542ad1f76c5
child 4423
14f3ca3dcef6
equal deleted inserted replaced
4220:4df8f9fc7ea9 4221:c9fdc07753a7
110 (bool), fixed (bool), autofixing (bool), fixedMsg (str))) 110 (bool), fixed (bool), autofixing (bool), fixedMsg (str)))
111 """ 111 """
112 return __checkCodeStyle(filename, source, args) 112 return __checkCodeStyle(filename, source, args)
113 113
114 114
115 def codeStyleBatchCheck(argumentsList, send, fx): 115 def codeStyleBatchCheck(argumentsList, send, fx, cancelled):
116 """ 116 """
117 Module function to check code style for a batch of files. 117 Module function to check code style for a batch of files.
118 118
119 @param argumentsList list of arguments tuples as given for codeStyleCheck 119 @param argumentsList list of arguments tuples as given for codeStyleCheck
120 @param send reference to send method 120 @param send reference to send function (function)
121 @param fx registered service name (string) 121 @param fx registered service name (string)
122 @param cancelled reference to function checking for a cancellation
123 (function)
122 """ 124 """
123 try: 125 try:
124 NumberOfProcesses = multiprocessing.cpu_count() 126 NumberOfProcesses = multiprocessing.cpu_count()
127 if NumberOfProcesses >= 1:
128 NumberOfProcesses -= 1
125 except NotImplementedError: 129 except NotImplementedError:
126 NumberOfProcesses = 4 130 NumberOfProcesses = 1
127 131
128 # Create queues 132 # Create queues
129 taskQueue = multiprocessing.Queue() 133 taskQueue = multiprocessing.Queue()
130 doneQueue = multiprocessing.Queue() 134 doneQueue = multiprocessing.Queue()
131 135
132 # Submit tasks 136 # Submit tasks (initially two time number of processes
133 for task in argumentsList: 137 initialTasks = 2 * NumberOfProcesses
138 for task in argumentsList[:initialTasks]:
134 taskQueue.put(task) 139 taskQueue.put(task)
135 140
136 # Start worker processes 141 # Start worker processes
137 for i in range(NumberOfProcesses): 142 for i in range(NumberOfProcesses):
138 multiprocessing.Process(target=worker, args=(taskQueue, doneQueue))\ 143 multiprocessing.Process(target=worker, args=(taskQueue, doneQueue))\
139 .start() 144 .start()
140 145
141 # Get and send results 146 # Get and send results
147 endIndex = len(argumentsList) - initialTasks
142 for i in range(len(argumentsList)): 148 for i in range(len(argumentsList)):
143 filename, result = doneQueue.get() 149 filename, result = doneQueue.get()
144 send(fx, filename, result) 150 send(fx, filename, result)
151 if cancelled():
152 # just exit the loop ignoring the results of queued tasks
153 break
154 if i < endIndex:
155 taskQueue.put(argumentsList[i + initialTasks])
145 156
146 # Tell child processes to stop 157 # Tell child processes to stop
147 for i in range(NumberOfProcesses): 158 for i in range(NumberOfProcesses):
148 taskQueue.put('STOP') 159 taskQueue.put('STOP')
149 160

eric ide

mercurial