进程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))

 

发布了259 篇原创文章 · 获赞 6 · 访问量 4962
App 阅读领勋章
微信扫码 下载APP
阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览