Python并行运行两种方式:1.Multiprocessing多进程库 2.Shell脚本运行

工作时需要跑六十万条数据,老大说python实现并行有两种方式,一种是使用多进程库,一种是利用Shell脚本并行。写了两个小demo:

Multiprocess多进程

import time
import os
import multiprocessing
from multiprocessing import Pool

def run(k):
    # print(k, multiprocessing.current_process().name)  # 打印当前进程名称
    # time.sleep(1)
    for i in range(5):
        time.sleep(1)

def run_pool():
    def pool():
    	cpu_count = os.cpu_count()
        p = Pool(cpu_count)	# 8 
        # p.map(run, range(40))    # 排除打印语句运行 6.40s
        p.map(run, range(8))    # 排除打印语句运行 5.45s
        p.close()
        p.join()
    pool()

if __name__ == '__main__':
    t0 = time.time()
    run_pool()
    t1 = time.time()
    print(t1 - t0)

注意

  • 进程的开闭也需要一定的时间,所以使用map函数时迭代次数尽量与进程数一致
  • 服务器上运行代码时进程数要小于电脑cpu核数,还有其他人要运行程序

Shell脚本并行运行程序

test.py

import sys
receive = sys.argv[1:]	# 接收程序外部传递的参数
start, end = int(receive[0]), int(receive[1])
for i in range(start, end):
        print("hello world" + str(i))

test.sh

#!/bin/Bash
total_num=10
machine=5
for ((i=0;i<$machine;i++))
        do
                each_num=$[ $total_num / $machine ]
                start=$[ $i * $each_num ]
                end=$[ ($i+1) * $each_num ]
                python -u test.py $start $end &
                echo $start, $end, $each_num
        done
wait
echo "END"

运行结果请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值