久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python多進(jìn)程池。當(dāng)工作進(jìn)程之一確定不再需要執(zhí)行更多工作時(shí),如何退出腳本?

瀏覽:2日期:2022-08-07 10:12:51
如何解決Python多進(jìn)程池。當(dāng)工作進(jìn)程之一確定不再需要執(zhí)行更多工作時(shí),如何退出腳本??

您可以使用中的回調(diào)Pool.apply_async。

這樣的事情應(yīng)該可以為您完成工作。

from multiprocessing import Pooldef part_crack_helper(args): solution = do_job(args) if solution:return True else:return Falseclass Worker(): def __init__(self, workers, initializer, initargs):self.pool = Pool(processes=workers, initializer=initializer, initargs=initargs) def callback(self, result):if result: print 'Solution found! Yay!' self.pool.terminate() def do_job(self):for args in product(seed_str, repeat=4): self.pool.apply_async(part_crack_helper, args=args, callback=self.callback)self.pool.close()self.pool.join()print 'good bye'w = Worker(num_proc, init, [total_count])w.do_job()解決方法

mp.set_start_method(’spawn’)total_count = Counter(0)pool = mp.Pool(initializer=init,initargs=(total_count,),processes=num_proc)pool.map(part_crack_helper,product(seed_str,repeat=4))pool.close()pool.join()

因此,我有一組工作人員在做一些工作。它只需要找到一個(gè)解決方案。因此,當(dāng)一個(gè)工作進(jìn)程找到解決方案時(shí),我想停止一切。

我想到的一種方法是只調(diào)用sys.exit()。但是,由于其他進(jìn)程正在運(yùn)行,因此似乎無(wú)法正常工作。

另一種方法是檢查每個(gè)進(jìn)程調(diào)用的返回值(part_crack_helper函數(shù)的返回值),然后在該進(jìn)程上終止調(diào)用。但是,我不知道在使用該map函數(shù)時(shí)該怎么做。

我應(yīng)該如何實(shí)現(xiàn)?

標(biāo)簽: Python 編程
主站蜘蛛池模板: 楚雄市| 云安县| 皮山县| 新闻| 宁蒗| 克什克腾旗| 余庆县| 泸西县| 左贡县| 诸城市| 云霄县| 通化县| 永平县| 鄱阳县| 涞源县| 海南省| 滁州市| 霍城县| 铅山县| 茶陵县| 乌鲁木齐县| 应城市| 论坛| 通化县| 平定县| 茶陵县| 绩溪县| 威海市| 来宾市| 石林| 三原县| 洛隆县| 厦门市| 武平县| 板桥市| 秭归县| 福鼎市| 绵竹市| 成安县| 万山特区| 罗田县|