Python中进程关于非堵塞的含义举例

#!/usr/bin/env python3

-- coding: utf-8 -

**

‘’'Python中进程关于非堵塞的含义举例

List item

**

1*非阻塞:*全部添加到队列中,;立即返回,如果一个进程做完了就再添加一个,并没有与等待其他的进程完毕,但是回调函数是等待所有的任务完成之后才调用

2阻塞:(没有体现进程的优点),添加一个执行一个,如果一个任务不结束则另一个任务就进不来
3 进程池:

pool =Pool(max)
poo.apply_async()  #非阻塞的
pool.apply()  #阻塞的
(2):
pool.close    #进程池添加完毕,之后需要写的一个东西
pool.jion()    #如果要进行子进程需要写的一个,如果不行,就只能进行主进程,不能进行子进程

让主进程让步,为子进程可以执行,(相当于插队,让子进程先做,然后主进程再做)

‘’’
‘’’
1首先是非阻塞(举例)
‘’’

from random import random
import os
from multiprocessing import Process
from multiprocessing import Pool
import time
def task(task_name):
    print('开始做任务,',task_name)
    start = time.time()
    #使用sleep
    time.sleep(random() * 2)
    end =time.time()
    #os.getpid(),用来显示出分配当前进程的数字序号
    return '完成任务{},用时是{},进程序号是{}'.format(task_name,(end - start),os.getpid())
container =[]
#定义一个回调函数:
def callback_back(n):
    container.append(n)


if __name__ =='__main__':
    pool = Pool(4)
    plan = ['学习','睡觉','做饭','玩游戏','看电视','吃饭']
    for i in plan:
        pool.apply_async(task,args=(i,),callback=callback_back)


    pool.close() #添加任务结束
    pool.join()  #在主进程中插队,使得可以进行子进程

    for i in container:
        print(i)
    print('结束')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值