我正在运行许多多线程python程序,我的CPU几乎总是100%。
我不是这方面的专家,但可以使用我网络中其他员工的CPU,因为我的PC上唯一的问题是我需要更多的内核来更快地处理数据RAM从16GB到10使用GB。
我们使用的是Windows 7,8.1和10。
答案 0 :(得分:1)
开箱即用 - 解决方案,没有。
您所描述的是网格。网格计算确实存在,但它不是与Python或任何编程语言一起提供的东西。
您需要一台服务器,工作客户端在空闲时连接并请求更多工作,并提供结果。您可以使用现有框架(例如Boinc)或构建您自己的客户端和服务器,但这不是一个简单的任务,使其正常工作。
例如,您的服务器需要处理将任务交给工作人员的情况,但工作人员似乎没有发回任何结果。在哪个阶段你会宣布工人死亡并将任务重新提交给另一个工人?如果第一个工作人员很慢,那么您将为同一任务提供两个结果。该怎么办,特别是如果结果不同?
这还需要该网段管理员的合作。他们需要维护一组工作人员,并将他们的代码与他们在计算机中管理的任何其他软件一起安装。您还需要说服您的信息安全人员,您在网络中的每台计算机上运行任意代码的能力不会危及安全性。您可以通过容器化来缓解这种情况,但这会增加另一层复杂性。
然后是性能问题。网格计算具有尾部效应。网格可以快速开始处理任务,但是当您接近运行结束时,最后的任务需要很长时间才能完成。这是因为执行最后任务的工作人员反应迟钝且速度很慢。在某些时候,您需要声明您不想再等待,并且实际上开始在本地处理最后的任务以缓解此问题。同样,不是很复杂,但构建逻辑可以增加您的程序。
所有这些都需要大量的工作和维护,以及编程资源,使您的程序及其任务适合网格(任务需要令人尴尬地并行)。
如果这是你每周7天,每天24小时都做的事情,并且你想在一夜之间使用计算资源,那么它可能会很有用。如果这不是一个经常运行的东西,那么从云购买CPU电源并在那里运行部分任务可能会更便宜。当然,需要付出相应的费用,但您可以轻松地将这笔钱花在咖啡和饼干上,以便与您的信息安全人员会面。除此之外,您和管理员可以添加工作,可能没有商业案例可以做到这一点。
话虽如此,如果您决定遵循这条路线,还有几个针对Python的网格计算项目。评论中提到的维基页面列出了其中一些仍处于活动状态的页面。您可以从任务和工作管理中获得一些帮助。