Python多线程还是后台进程?
我想知道如何优化链接检查器,我已经用Python实现了一个Web服务。我已经缓存了对每24小时过期的数据库的响应。每天晚上,我都有一个cron任务刷新缓存,这样缓存就不会过时 当然,如果我截断缓存,或者如果正在检查一个页面,而该页面中有很多链接不在缓存中,事情就会变慢。我不是计算机科学家,所以我想要一些关于如何使用线程或进程来优化它的建议和具体帮助 我想通过请求每个url作为后台进程进行优化(伪密码): 对于我的大多数用例来说,这将脚本的时间至少减少1/6,而不是仅仅通过每个url循环并等待每个响应,但是我担心脚本运行的服务器会过载。我考虑过使用一个队列,一次大概有25个批次Python多线程还是后台进程?,python,multithreading,Python,Multithreading,我想知道如何优化链接检查器,我已经用Python实现了一个Web服务。我已经缓存了对每24小时过期的数据库的响应。每天晚上,我都有一个cron任务刷新缓存,这样缓存就不会过时 当然,如果我截断缓存,或者如果正在检查一个页面,而该页面中有很多链接不在缓存中,事情就会变慢。我不是计算机科学家,所以我想要一些关于如何使用线程或进程来优化它的建议和具体帮助 我想通过请求每个url作为后台进程进行优化(伪密码): 对于我的大多数用例来说,这将脚本的时间至少减少1/6,而不是仅仅通过每个url循环并等待每个
多线程是更好的整体解决方案吗?如果是这样,我将如何使用多线程模块来实现这一点?“我会将您的网站与链接检查器分离。”我不确定您的意思。这与“我的网站”无关。这是一个单独的应用程序。是的,我首先做一个HEAD请求,如果失败,我会发送一个GET请求。我所说的“你的网站”是指你的前端。有两个通过消息队列或数据库进行通信的独立应用程序。
# The part of code that gets response codes not in cache...
responses = {}
# To begin, create a dict of url to process in background
processes = {}
for url in urls:
processes[url] = Popen("curl " url + " &")
# Now loop through again and get the responses
for url in processes
response = processes[url].communicate()
responses[url] = response
# Now I have responses dict which has responses keyed by url