如何使键盘监听池敏感

2024-03-29 04:59:43 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法手动退出多线程操作?我想做的是:

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()

Tags: oftoinmapparallelupdate手动num
1条回答
网友
1楼 · 发布于 2024-03-29 04:59:43

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

请参阅下面的一个好的用法示例: Python multiprocessing - tracking the process of pool.map operation

我用pathos作为我上面链接的答案,但也有imap和{}可从普通老multiprocessing获得。在

>>> 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。最好使用迭代/异步映射,然后当看到你有你想要的东西时,忽略其余的并继续前进。在

相关问题 更多 >