首页 > 编程语言 > 详细

Python—进程和线程

时间:2019-08-09 17:38:12      阅读:109      评论:0      收藏:0      [点我收藏+]

并行和并发

    并发:   指应用能够交替执行不同的任务,其实并发有点类似于多线程的原理,多线程并非是同时执行多个任务,
                如果你开两个线程执行,就是在你几乎不可能察觉到的速度不断去切换这两个任务,已达到"同时执行效
                果",其实并不是的,只是计算机的速度太快,我们无法察觉到而已.
                例: 就类似于你,吃一口饭喝一口水,以正常速度来看,完全能够看的出来,当你把这个过程以n倍速度执行
                      时..可以想象一下.
     并行:指应用能够同时执行不同的任务.
         例:吃饭的时候可以边吃饭边打电话,这两件事情可以同时执行
     两者区别:一个是交替执行,一个是同时执行.
 

 进程和线程

    概念:进程就是操作系统中执行的一个程序,一个进程还可以拥有多个并发的执行线索,简单的说就是拥有多个

               可以获得CPU调度的执行单元,这就是所谓的线程

  

"""
单进程

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


def download_task(filename):
    print(启动下载进程,进程号[%d]. % getpid())
    print(开始下载%s... % filename)
    time_to_download = randint(5, 10)
    sleep(time_to_download)
    print(%s下载完成! 耗费了%d秒 % (filename, time_to_download))


def main():
    start = time()
    p1 = Process(target=download_task, args=(Python从入门到住院.pdf, ))
    p1.start()
    p2 = Process(target=download_task, args=(Peking Hot.avi, ))
    p2.start()
    p1.join()
    p2.join()
    end = time()
    print(总共耗费了%.2f秒. % (end - start))


if __name__ == __main__:
    main()
此处为以上代码运行一次的结果:
启动下载进程,进程号[1420]. 开始下载Python从入门到住院.pdf... 启动下载进程,进程号[1431]. 开始下载Peking Hot.avi... Peking Hot.avi下载完成! 耗费了6秒 Python从入门到住院.pdf下载完成! 耗费了11秒 总共耗费了11.01秒.
"""
多进程

"""
# 多进程的库
from multiprocessing import Process
from random import randint
from time import time, sleep
import os


def download_task(filename):
    print(开始下载%s % filename)
    time_to_download = randint(5, 10)
    sleep(time_to_download)
    print(%s 下载完成,经过%d秒 % (filename, time_to_download))


def main():

    start = time()
    # 开启两个多进程,     函数名              传递的参数,需要注意的是,它接受的是一个元组(tuple)
    p1 = Process(target=download_task, args=(论.......mp4, ))
    p2 = Process(target=download_task, args=(l论.......mp5, ))
    # 获取进程号

    # 启动进程
    p1.start()
    p2.start()

    ##############
    # 进程阻塞.
    p1.join()
    p2.join()
    ##############
    end = time()
    print(end - start)


if __name__ == __main__:
    main()

import requests

url = http://op.hanhande.net/shtml/op_wz/list_2602_2.shtml
response = requests.get(url)
response.encoding = gbk
HTML = response.text
print(HTML)

 

 
 
  
 

Python—进程和线程

原文:https://www.cnblogs.com/liyuanyuan97/p/11328586.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!