gpt4 book ai didi

python - 如何在任意超时后停止 Python 程序

转载 作者:太空宇宙 更新时间:2023-11-04 10:57:38 25 4
gpt4 key购买 nike

举个例子,这段代码是有效的

import urllib

image = urllib.URLopener()
file_ = 1
name = 1
for i in range(1,1000):
try:
image.retrieve("http://mangawriter.com/pics/pic"+str(file_)+".jpeg","pic"+str(name)+".jpeg")
print "save file %s" %file_
name += 1
file_ += 1
except IOError:
file_ += 1

即使代码仍在运行,我如何才能让它在花费一段时间后停止?请帮我弄清楚。

最佳答案

我会使用 multiprocessing模块,它生成用于并行化任务的新进程(不是线程)。

怎么做?首先,实际的下载代码应该放在一个函数中:

import urllib
import multiprocessing
import time

def download_images():
image = urllib.URLopener()
file_ = 1
name = 1
for i in range(1,1000):
try:
image.retrieve("http://mangawriter.com/pics/pic"+str(file_)+".jpeg","pic"+str(name)+".jpeg")
print "save file %s" %file_
name += 1
file_ += 1
except IOError:
file_ += 1

现在,我们创建一个新的 multiprocessing.Process 对象,将上面的函数作为其目标传递。这个对象将启动一个进程来执行这个函数:

downloader = multiprocessing.Process(target=download_images)

一旦我们创建了进程对象,只需调用它的start() 方法。这将启动一个并行运行的进程:

downloader.start()

由于是并行运行,所以主程序一直在执行。现在,我们定义一个超时,并在这个超时的时间休眠。在下面的示例中,超时为 15 秒:

timeout = 15
time.sleep(timeout)

一旦超时结束,就终止下载进程:

downloader.terminate()

可以找到完整的程序here .

关于python - 如何在任意超时后停止 Python 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8514067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com