我有一个应用程序,可以让我选择使用线程还是进程:
def _get_future(self, workers):
if self.config == "threadpool":
self.logger.debug("using thread pools")
executor = ThreadPoolExecutor(max_workers=workers)
else:
self.logger.debug("using process pools")
executor = ProcessPoolExecutor(max_workers=workers)
return executor
稍后我执行代码:
self.executor = self._get_future()
for component in components:
self.logger.debug("submitting {} to future ".format(component))
self.future_components.append(self.executor.submit
(self._send_component, component))
# Wait for all tasks to finish
while self.future_components:
self.future_components.pop().result()
当我使用流程时,我的应用程序卡住了。永远不会调用_send_component方法。当我使用线程时,一切正常。
答案 0 :(得分:0)
问题是命令方法,这是功能方法的用例。
self._send_component是类的成员函数。分开的过程意味着没有共同的记忆来共享变量。
解决方案是重写代码,以使_send_component是静态方法。