def get_thread():
g = requests.get("http://www.google.com")
time.sleep(2)
print(g.text[0:100])
if __name__ == '__main__':
t = threading.Thread(target=get_thread)
t.daemon = True # Try commenting this out, running it, and see the difference
t.start()
print("Done")
我真的不知道你仅仅通过启动一个http请求想要达到什么目的。所以我会列出一些我能想到的用例。你知道吗
忽略结果
如果你唯一想要的是你的程序感觉它从来没有停止过发出请求。您可以使用像aiohttp这样的库来生成concurrent request,而无需实际调用
await
来获取响应。你知道吗但是如果你不检查任何东西,你怎么知道请求成功了呢?你知道吗
忽略身体
也许你想表现得很好,你担心失去阅读身体的时间。在这种情况下,您可以启动请求,检查状态代码,然后关闭连接。你知道吗
如果你像我之前那样关闭连接,你将无法reuse the connections。你知道吗
正确的方法
我建议使用aiohttp在异步调用上
await
,这样就可以添加必要的逻辑而不必阻塞。你知道吗但是,如果您希望获得性能,则需要使用http库的自定义解决方案。也许您还可以考虑在您的客户机和服务器中使用非常小的请求/响应、小的超时和压缩。你知道吗
您可以将线程作为守护进程运行,请参阅下面的代码;如果我注释掉该行(t.daemon=True),代码将等待线程完成后退出。当daemon设置为true时,它将简单地退出。你可以用下面的例子试试。你知道吗
导入请求 导入线程 导入时间
相关问题 更多 >
编程相关推荐