首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使KeyboardInterrupt的池敏感

如何使KeyboardInterrupt的池敏感
EN

Stack Overflow用户
提问于 2015-02-12 20:55:07
回答 1查看 376关注 0票数 1

有办法手动退出多线程操作吗?以下是我要做的事:

代码语言:javascript
复制
pool = Pool(num_parallel_workers)
pool.map(update_completions_in_parallel, list_of_hits)
# press ctrl+c in middle of operation to 'exit' and return to CLI prompt
pool.close()
pool.join()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-12 21:25:48

为什么不直接使用迭代或异步映射呢?这些都是很容易中断或杀死或其他什么,因为地图没有阻塞。

参见这里的一个很好的用法示例:Python multiprocessing - tracking the process of pool.map operation

我使用pathos作为我的答案链接在上面,但也有imapmap_async可从普通的旧multiprocessing

代码语言:javascript
复制
>>> import multiprocessing as mp
>>> p = mp.Pool()   
>>> p.imap
<bound method Pool.imap of <multiprocessing.pool.Pool object at 0x109592c50>>
>>> p.map_async 
<bound method Pool.map_async of <multiprocessing.pool.Pool object at 0x109592c50>>

但是,如果您希望通过执行close来终止已经启动的进程/线程,那么join…然后保存周期…您输入的内容(即close,然后是join)将不起作用。你必须用terminate来做…如果您计划在以后触摸池或结果对象,则不建议终止pool。最好使用迭代/异步映射,然后当看到您想要的东西时--忽略其余的,继续前进。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28487577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档