Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UbuntuDjango运行管理的速度要快得多(我尝试了renice,将-18优先级设置为python进程pid)_Python_Django_Ubuntu - Fatal编程技术网

UbuntuDjango运行管理的速度要快得多(我尝试了renice,将-18优先级设置为python进程pid)

UbuntuDjango运行管理的速度要快得多(我尝试了renice,将-18优先级设置为python进程pid),python,django,ubuntu,Python,Django,Ubuntu,我正在使用ubuntu。我有一些管理命令,它在运行时会执行大量数据库操作,因此需要将近15分钟的时间 我的系统监视器显示我的系统有4个cpu和6GB RAM。但是,这个过程并没有利用所有的cpu。我认为它只使用了一个CPU,而且ram太少了。我认为,如果我能够使用所有的cpu和大部分的ram,那么这个过程将在很短的时间内完成 我尝试了renice,将优先级设置为-18(意味着非常高),但速度还是比较慢 详情: 这是一个循环数接近10000的python脚本,而这也接近10个这样的循环。在每个循环

我正在使用ubuntu。我有一些管理命令,它在运行时会执行大量数据库操作,因此需要将近15分钟的时间

我的系统监视器显示我的系统有4个cpu和6GB RAM。但是,这个过程并没有利用所有的cpu。我认为它只使用了一个CPU,而且ram太少了。我认为,如果我能够使用所有的cpu和大部分的ram,那么这个过程将在很短的时间内完成

我尝试了renice,将优先级设置为-18(意味着非常高),但速度还是比较慢

详情:


这是一个循环数接近10000的python脚本,而这也接近10个这样的循环。在每个循环中,它都会保存到postgres数据库。

如果您希望使此应用程序在多个cpu上运行,那么根据您的设置,您可以尝试许多方法

想到的最明显的事情是让应用程序使用线程和多进程。这将允许应用程序一次“做更多”。显然,这里可能存在的问题是并发数据库访问,因此可能需要使用事务(在这一点上,首先可能会失去使用多进程的优势)

其次,确保您没有打开和关闭大量数据库连接,确保您的应用程序可以在需要的时间内保持连接打开

第三,确保数据库被正确索引。如果您在大字符串上进行搜索,那么速度会很慢

第四,在SQL中尽你所能让python几乎不做任何操作,如果你允许的话,SQL在处理数据方面的速度是惊人的快。一旦您开始将数据从数据库中取出并转换成代码,那么事情就会大大放缓

第五,使用可在数据库内部缓存和优化的存储过程。这些查询比无法轻松优化的应用程序生成查询快得多

第六,不要每次迭代都保存程序。尝试生成一个批处理样式的作业,通过该作业可以更改许多记录,然后将所有记录保存在一个批处理作业中。这将减少每次迭代的IO数量,并大大加快过程

Django确实支持使用一种方法,但不久前在stackoverflow上也有一个关于一次性保存多个Django对象的问题


以防万一,您是否运行了命令renice-20-p{pid}而不是renice--20-p{pid}?在第一种情况下,它将被赋予最低优先级。

“大量的数据库操作”听起来好像瓶颈是I/O而不是CPU。您可以尝试使用
ionice
来提高进程的I/O优先级,但没有更多关于这些数据库操作实际是什么的信息,这只是一个粗略的猜测。这是一个循环计数接近10000的python脚本,而这也几乎是十个这样的循环。在每个循环中,它都会保存到postgres数据库。听起来你可以从代码重构中获益。重构是另一回事,但我的意思是,它在我的系统中运行得很慢,但在服务器上运行得更快(通常是高配置)。但是,我的笔记本电脑有4个CPU和6 GB ram,而且只使用了部分内存。必须有一个明确的解决方案。您是否尝试过
ionice
?此外,MattWriteCode的答案还包含有用的建议。