有没有办法在python中的键盘中断信号或其他SIGINT信号后恢复迭代器?
特别适用于itertools迭代器
import itertools
for word in itertools.product("abcd",repeat=3):
print(word)
我想从中断的地方恢复打印
答案 0 :(得分:0)
您可以在try / except块中捕获键盘中断
import itertools
import time
for word in itertools.product("abcd",repeat=3):
try:
print(word)
time.sleep(1)
except:
pass
在执行期间按Ctrl + C不会停止迭代
答案 1 :(得分:0)
在对发电机进行了一点阅读之后,'产量' statement.i已经意识到生成器只输出一个值,丢弃它并输出另一个值等等......我试图在python退出后找到一种方法来恢复以下函数的输出
counter=0
def product(*args, repeat=1):
global counter
pools = [tuple(pool) for pool in args] * repeat
#yield pools
result = [[]]
for pool in pools:
result = [x+[y] for x in result for y in pool]
for prod in result:
counter=counter+1
if counter>11:
yield tuple(prod)
def product_function():
for i in product('abc',repeat=3):
print(i)
print(counter)
product_function()
我最终决定放入一个名为counter的小变量,一旦计数器大于第11个单词,那么所有的值(单词)都会被生成并打印出来。我想我可以编写一些代码,以便在程序退出时将计数器变量存储在一个单独的文件中,每当程序重新启动时,它会从文件中提取最后一个计数器变量,以便输出恢复。希望这有效..