Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使池对键盘中断敏感_Python_Multiprocessing - Fatal编程技术网

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
来执行此操作…如果您计划在之后触摸池或结果对象,则不建议终止
池。最好使用一个迭代/异步映射,当你看到你想要的东西时——忽略其余的,继续前进