從上面的例子可以看出峦嗤,如果程序中的代碼只能按順序一點點的往下執(zhí)行嬉荆,那么即使執(zhí)行兩個毫不相關(guān)的下載任務(wù),也需要先等待一個文件下載完成后才能開始下一個下載任務(wù)响蓉,很顯然這并不合理也沒有效率硕勿。接下來我們使用多進程的方式將兩個下載任務(wù)放到不同的進程中,代碼如下所示厕妖。
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()