码迷,mamicode.com
首页 > 编程语言 > 详细

Python - 并发编程

时间:2018-06-26 00:44:22      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:实现   技术   .com   共享内存   pre   开始   alt   没有   单线程   

1. 并发编程

  1. 实现让程序同时执行多个任务也就是常说的“并发编程”
  2. 使用Python实现并发编程主要有3种方式:多进程、多线程、多进程+多线程。
  3. 进程间通信必须通过进程间通信机制(IPC,Inter-Process Communication)来实现数据共享,具体的方式包括管道、信号、套接字、共享内存区等。

2. 单进程单线程

from random import randint
from time import time, sleep


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()
    download_task(‘文件A.pdf‘)
    download_task(‘文件B‘)
    end = time()
    print(‘总共耗费了%.2f秒.‘ % (end - start))


if __name__ == ‘__main__‘:
    main()

技术分享图片
没有效率,一个文件下载完,另一个文件才下载

3. 把下载任务分别放到两个进程中(多进程)

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=(‘文件A.pdf‘, ))
    p1.start()
    p2 = Process(target=download_task, args=(‘文件B.avi‘, ))
    p2.start()
    # 主程序主线程等待子进程p1, p2完成再继续执行
    p1.join()
    p2.join()
    end = time()
    print(‘总共耗费了%.2f秒.‘ % (end - start))


if __name__ == ‘__main__‘:
    main()

技术分享图片

Python - 并发编程

标签:实现   技术   .com   共享内存   pre   开始   alt   没有   单线程   

原文地址:https://www.cnblogs.com/allen2333/p/9226862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!