我有一个无限循环运行异步,但我无法终止它。这里是我的代码的类似版本:Python多处理异步无法终止进程
from multiprocessing import Pool
test_pool = Pool(processes=1)
self.button1.clicked.connect(self.starter)
self.button2.clicked.connect(self.stopper)
def starter(self):
global test_pool
test_pool.apply_async(self.automatizer)
def automatizer(self):
i = 0
while i != 0 :
self.job1()
# safe stop point
self.job2()
# safe stop point
self.job3()
# safe stop point
def job1(self):
# doing some stuff
def job2(self):
# doing some stuff
def job3(self):
# doing some stuff
def stopper(self):
global test_pool
test_pool.terminate()
我的问题是终止()内塞功能不起作用。我试着把job1,job2,job3中的terminate()函数仍然不工作,试着把它放在starter函数的循环结尾,再次不起作用。我怎样才能阻止这个异步过程?
在任何时候停止进程都足够好,是否有可能让它停在我想要的点上?我的意思是如果一个停止命令(不知道它是什么命令)给予处理,我希望它完成“#安全停止点”标记的步骤,然后终止该过程。
这似乎很奇怪:'i = 0'后面跟着'while i!= 0:'因为我设置为零,while语句永远不会循环 – 2014-10-09 06:27:23
发布您正在使用的实际代码。你发布的是*不是一个有效的Python程序。 – Bakuriu 2014-10-09 06:57:26
你不需要'Pool'来启动一个任务;一个'进程'就足够了。 – 2014-10-09 07:28:38