Python 如何使池对键盘中断敏感
有没有办法手动退出多线程操作?以下是我想做的:Python 如何使池对键盘中断敏感,python,multiprocessing,Python,Multiprocessing,有没有办法手动退出多线程操作?以下是我想做的: 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() 为什么不直接使用迭代或异步映射呢?这些都很容易被打断或杀死,因为地图没有阻塞
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()
为什么不直接使用迭代或异步映射呢?这些都很容易被打断或杀死,因为地图没有阻塞 请参见此处的良好用法示例: 我在上面链接的答案中使用了
pathos
,但也有imap
和map\u async
可从普通的多处理
中获得
>>> 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>>
>将多处理作为mp导入
>>>p=mp.Pool()
>>>p.imap
>>>p.map\u异步
但是,如果您希望通过执行close
然后执行join
…然后保存循环来终止已经启动的进程/线程,那么您键入的内容(即close
然后执行join
)将不起作用。您必须使用terminate
来执行此操作…如果您计划在之后触摸池或结果对象,则不建议终止池。最好使用一个迭代/异步映射,当你看到你想要的东西时——忽略其余的,继续前进