1
  1. 我有一个 py 脚本,它从 db 读取数据并加载到 CSV 文件中,如下所示

    with open(filePath, 'a') as myfile:
        myfile.write(myline)
    
  2. 文件准备好后,我的 py 脚本将从 subprocess.call(...) 启动 SQLLDR 并加载所有这些。

我将不得不以非常低的优先级执行上述所有步骤。我已经设置os.nice(19)并将其传递给我的所有subprocess.call(...)功能。对于上面的步骤 2,这看起来不错。

在服务器上创建和写入文件时如何设置“niceness”?是否可以在写入/读取文件时通过 os (在设置之后os.nice(19))以“不错”的方式确保它以低优先级运行?

4

3 回答 3

2

默认情况下,在 linux >2.6 上,io 优先级是根据 nice 值计算的,这意味着低优先级的进程会自动产生较低的 IO 影响,但是如果您愿意,可以使用ionice命令指定进程的 io 优先级将其设置为另一个值。

于 2013-10-23T14:10:35.827 回答
1

一般来说,nice值会影响您的进程在 CPU 上的调度(即您获得的 CPU 周期份额和优先级),因此它几乎不会对仅数据写入文件的进程产生任何影响。为什么不从一开始就以适当的低nice优先级运行该过程?

于 2013-10-23T13:38:03.663 回答
0

正如它在构建 nice的 setpriority(2) 手册中所说

由 fork(2) 创建的子代继承其父代的 nice 值。nice 值在 execve(2) 中保留。

所以任何子进程都将继承当前的 nice 设置。尽管正如 Alexander 指出的那样,对于大部分时间都在等待磁盘写入完成的进程,您不会看到太大的不同。

于 2013-10-23T13:43:16.583 回答