python-100-days:0-15,多进程、多线程+继承+Lock()

创建进程:

  • Linux:
    os模块中的fork()函数
  • Windows:
    multiprocessing模块中的Process类

Process类的进程启动和结束:

  1. 创建进程:Process(target= ,args=(,))
    target表示进程要执行的代码【示例中是一个函数】
    args是一个元组,表示传递的参数【示例中是传给函数的参数】
    源码中如下:
 self._target(*self._args, **self._kwargs)
‘’‘元组中第一个是参数,第二个是关键词’‘’
  1. 启动进程使用:Process.start()

  2. 等待进程结束使用:Process.join()

from multiprocessing import Process
from os import getpid
from time improt time,sleep
from random import randint

# getpid函数可以获得进程号 PID

def psudo_download(filename):
    start = time()
    print('启动进程,进程号[%d]' % getpid())
    print('开始下载%s' % filename)
    sleep(randint(5,10))
    end = time()
    print('%s下载完成,耗时%d秒' % (filename,end-start))

def main():
    start = time()
    p1 = Process(target=psudo_download,args=('法克鱿.avi',))
    p1.start()
    p2 = Process(target=psudo_download,args=('草泥马.gif',))
    p2.start() # 表示进程开始
    p1.join() # 表示等待进程结束
    p2.join()
    end = time()
    print('共耗时%d' % end-start)

结果如下:
在这里插入图片描述

进程间通信:

笔者建议读者试一试multiprocessing模块中的Queue类,于是自己使用了一下,能完成显示,但是程序不会自己退出,高了很久也不知道啥原因,搞笑了。。。

from multiprocessing import Process,Queue
from time import sleep
from os import getpid


def sub_task(queue):
    print(getpid())
    while 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值