【发布时间】:2019-07-18 05:29:22
【问题描述】:
我有具有以下运行功能的线程分类。 因此,当此类设置为运行时,它会继续检查多处理管理器队列,如果其中有任何内容,它会启动池以运行作业(跟踪功能)。作业完成后,池会自动关闭,如果不为空,则开始检查整个队列。
def runQueue(self):
print("The current thread is", threading.currentThread().getName())
while True:
time.sleep(1)
self.pstate=False
if self.runStop: #this stops the whole threading by dropping main loop
break
while not self.tasks.empty():
self.pstate=True
task = self.tasks.get()
with ThreadPool(processes=1) as p: #<- want to kill this pool
ans = p.apply(self.track, args=(task,))
self.queueSend(ans)
self.tasks.task_done()
print("finished job")
我使用了池,因为该函数返回一个我需要映射的值。我正在寻找一种方法,即在某些父调用时,池通过丢弃作业而关闭,同时保持主类线程(运行函数 [主循环] 运行)。 任何形式的帮助表示赞赏。
【问题讨论】:
-
我正在阅读有关引发异常的内容,但不知道它是如何工作的。
-
你看过this的问题吗?它可能会给你一个答案
-
我正在看文章,但我没有完全理解。你能帮帮我吗?我需要首先更改我的代码以使用多处理处理而不是池,然后我不理解异常部分。 @rotemtal
-
基本上,您需要将处理(通过进程或线程)封装在 try-except 块中,在出现异常时(在父进程中,在 try-except 块中)您只需调用 @987654323 @ 在线程池或每个进程上。如果这确实满足了您修改代码的要求,请告诉我
标签: python threadpool python-multithreading pool