Python多线程的简易使用

python的多线程简易使用

import multiprocessing as mp

def show(ctx, proc):
	‘’‘多线程执行的主体’‘’
    for i in ctx:
        print('ctx: %d,  proc: %d' %(i, proc))

def mul_show(ctx, proc_num):
	‘’‘show 函数多线程执行’‘’
    all_proc = [] 							 #存放所有线程
    delta = int(len(ctx)/proc_num)
    start = 0
    end = delta
    for i in range(proc_num):
        sub_ctx = ctx[start: end]      # 将输入数据劈成多分
        start = end
        end = end+delta
        p = mp.Process(target=show, args=(sub_ctx,i))  #初始化线程
        all_proc.append(p)
        p.start()    #启动线程

	# 设置线程阻塞,线程阻塞能够保证所有线程都执行完毕后才会进入下一段程序     
    for p in all_proc:
        p.join()
 
 if __name__ == '__main__':
    arr = range(20)
    proc_num = 5
    mul_show(arr, 5)
    # 在所有线程都执行完毕后,才会输出【end】
    print('end')      

上述代码输出的结果:注意 end在最后一行才被输出

ctx: 0,  proc: 0
ctx: 1,  proc: 0
ctx: 2,  proc: 0
ctx: 4,  proc: 1
ctx: 3,  proc: 0
ctx: 5,  proc: 1
ctx: 8,  proc: 2
ctx: 6,  proc: 1
ctx: 9,  proc: 2
ctx: 7,  proc: 1
ctx: 10,  proc: 2
ctx: 12,  proc: 3
ctx: 13,  proc: 3
ctx: 11,  proc: 2
ctx: 14,  proc: 3
ctx: 15,  proc: 3
ctx: 16,  proc: 4
ctx: 17,  proc: 4
ctx: 18,  proc: 4
ctx: 19,  proc: 4
end

如果我们注释掉线程阻塞的操作:注意,【end】在线程执行完毕之前就已经输入,这意味着在所有线程执行完毕之前,代码会继续往后执行

ctx: 0,  proc: 0
ctx: 1,  proc: 0
ctx: 4,  proc: 1
ctx: 2,  proc: 0
ctx: 5,  proc: 1
ctx: 3,  proc: 0
ctx: 6,  proc: 1
end
ctx: 8,  proc: 2
ctx: 7,  proc: 1
ctx: 9,  proc: 2
ctx: 10,  proc: 2
ctx: 12,  proc: 3
ctx: 11,  proc: 2
ctx: 13,  proc: 3
ctx: 14,  proc: 3
ctx: 16,  proc: 4
ctx: 15,  proc: 3
ctx: 17,  proc: 4
ctx: 18,  proc: 4
ctx: 19,  proc: 4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值