python多進程提升cpu利用率

cpu參數:ios

1個物理cpu,2個邏輯cpu(超線程),單核 具體 http://blog.csdn.net/dba_waterbin/article/details/8644626   物理CPU、邏輯CPU和CPU核數app

打包文件,單進程spa

# coding=utf-8

from multiprocessing import Process
import sys, os
import time

def timetask(times):
    cmd="tar zcfPh /data/nerri_%s.tar.gz   /data/backup" % times
    os.system(cmd)


def works_multi_process(func, worknum):
    proc_record = []
    for i in range(worknum):
        p = Process(target = func, args = (i,))
        p.start()
        proc_record.append(p)
    for p in proc_record:
        p.join()
        
def works_single_process(func, worknum):
    proc_record = []
    for i in range(worknum):
        p = Process(target = func, args = (i,))
        p.start()
        p.join()


    
if __name__ == '__main__':
    print time.strftime('============start:%H%M%S==========')
    procs = 2
    works_multi_process(timetask,  procs)
    print time.strftime('============end:%H%M%S========')

運性結果:.net

單進程:線程

============start:154554==========
============end:154903===========code

多進程:blog

============start:155513==========進程

============end:155627========ip

查看磁盤和cpu利用率:iostat -x 1 10utf-8

ps:

單進程佔用cpu 90左右  平均cpu 45左右                                      磁盤io  %util:20左右

多進程 進程數2  每一個進程佔用cpu 90左右  平均cpu 100左右         磁盤io  %util:50+左右   變化幅度較大  20~70

多進程 進程數3 一個進程佔用cpu 90左右  另外兩個進程佔用cpu45左右  平均cpu 100左右   磁盤io  %util:50+左右   變化幅度較大

多進程 進程數4 每一個進程佔用cpu45左右  平均cpu 100左右   磁盤io  %util:35%左右        磁盤io  %util:50+左右   變化幅度較大

 系統的線程調度。即便是單線程,在不一樣的時間片,也有可能被調度到不一樣的核。能夠控制在哪一個核上運行~
相關文章
相關標籤/搜索