进程2


'''
Process类方法:
   start()  启动进程
   join()  主进程让步
   terminate()  中断进程
   is_alive()  判断进程是否是活跃的
   run()
'''
import os
from time import sleep
from multiprocessing import Process


def weichat(name):
    for i in range(5):  # parent process id
        print('正在跟{}聊天,这是第{}句'.format(name, i + 1), os.getpid(), os.getppid())
        sleep(1)


def study(course, time):
    for i in range(time):
        print('认真学习{},这个第{}小时'.format(course, i + 1), os.getpid(), os.getppid())
        sleep(1)


if __name__ == '__main__':
    p1 = Process(target=weichat, args=('瑶瑶姐',), name='一辰')
    p2 = Process(target=study, kwargs={'course': 'python', 'time': 4}, name='武茏')

    p1.start()
    p2.start()
    # p1.join()
    # p2.join()
    print(p1.name)  # Process-1  默认的
    print(p2.name)  # Process-2

    # 让主进程给子进程让步
    # p1.join()
    # p2.join()
    # # p1.run()
    # print(p1.is_alive())
    # p1.terminate()

    for i in range(5):
        print('---------->', i, os.getpid())
        if i == 3:
            p1.terminate()
        sleep(1)

'''
进程池: Pool

'''
import os
import random
import time
from time import sleep
from multiprocessing import Process, Pool


def download(song):
    print('正在下载:{},当前进程号:{}'.format(song, os.getpid()))
    ran = random.randint(1, 5)
    sleep(ran)
    print('下载{}成功'.format(song))


if __name__ == '__main__':
    p = Pool(4)

    songs = ['大碗宽面', '麻婆豆腐', '小苹果', '羊肉泡馍', '宫保鸡丁']
    start = time.time()
    for song in songs:
        # 非阻塞式进程下载
        p.apply_async(func=download, args=(song,))
        # 阻塞式: 只要前一个进程不完成任务,后面的任务就没有办法开始
        # p.apply(func=download, args=(song,))
    # 结束添加任务
    p.close()

    # 阻塞主进程
    p.join()

    end = time.time()
    print('全部歌曲下载完毕!用时:{}'.format(end-start))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值