我有一個無限循環運行異步,但我無法終止它。這裏是我的代碼的類似版本: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