最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python多進(jìn)程(加入進(jìn)程池)操作常見案例

 更新時間:2019年10月21日 10:30:23   作者:以夢為馬越騎越傻  
這篇文章主要介紹了python多進(jìn)程(加入進(jìn)程池)操作,結(jié)合常見案例形式分析了Python多進(jìn)程復(fù)制文件、加入進(jìn)程池及多進(jìn)程聊天等相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了python多進(jìn)程(加入進(jìn)程池)操作。分享給大家供大家參考,具體如下:

一、多進(jìn)程復(fù)制多個文件

import multiprocessing
import os
import time
# 復(fù)制文件,傳入文件名
def copy_file(old_file_name, old_name):
  new_file_name = 'new_file'
  new_name = old_name
  if not os.path.exists(new_file_name):
    os.makedirs(new_file_name)
  with open(old_file_name + '/' + old_name, 'rb') as f:
    file_content = f.read()
  with open(new_file_name + '/' + new_name, 'wb') as f:
    f.write(file_content)
if __name__ == '__main__':
  old_file_name = 'old_file'
  name_list = os.listdir(old_file_name)
  time_old = time.time()
  for name in name_list:
    process = multiprocessing.Process(target=copy_file, args=(old_file_name, name))
    process.start()
  time_new = time.time()
  print('執(zhí)行時間:%f' % (time_new - time_old))

二、優(yōu)化加入進(jìn)程池,并顯示復(fù)制進(jìn)度:

import multiprocessing
import os
import time
# 復(fù)制文件,傳入文件名
def copy_file(old_file_name, old_name, queue):
  new_file_name = 'new_file'
  new_name = old_name
  if not os.path.exists(new_file_name):
    os.makedirs(new_file_name)
  with open(old_file_name + '/' + old_name, 'rb') as f:
    file_content = f.read()
  with open(new_file_name + '/' + new_name, 'wb') as f:
    f.write(file_content)
    queue.put(new_file_name)
if __name__ == '__main__':
  old_file_name = 'old_file' #存放文件的文件名
  name_list = os.listdir(old_file_name) #取出所有文件的文件名
  queue = multiprocessing.Manager().Queue() #創(chuàng)建隊列對象,用于計算復(fù)制完成百分比
  po = multiprocessing.Pool(3) #創(chuàng)建線程池
  time_old = time.time() #用于計算花費時間
  for name in name_list:
    po.apply_async(copy_file, (old_file_name, name, queue))
  po.close()
  index = 0
  while True:
    index += 1
    queue.get()
    print('\r以保存%.2f%%' % ((index / len(name_list)) * 100), end='')
    if index == len(name_list):
      break
  time_new = time.time()
  print('執(zhí)行時間:%f' % (time_new - time_old))

三、多進(jìn)程聊天器:

import multiprocessing
import socket
import threading
# 需求:
# 1.主進(jìn)程創(chuàng)建一個TCPconnect
# 2.主進(jìn)程connect后創(chuàng)建進(jìn)程開啟一個新的Socketconnect
# 3.進(jìn)程里創(chuàng)建線程不斷的接收和提示發(fā)送消息
# 有連接時新創(chuàng)建一個進(jìn)程處理聊天
def speak_send(tcp_msg):
  while True:
    test = input('請輸入要發(fā)送的消息')
    tcp_msg.send(test.encode('utf-8'))
def speak_rec(tcp_msg):
  while True:
    print(tcp_msg.recv(1024).decode('gbk'))
# 開啟的進(jìn)程聊天
def speak_process(tcp_sock, tcp_msg, ip):
  print('開啟進(jìn)程')
  # 5.開線程循環(huán)接收消息
  msg_rec = threading.Thread(target=speak_rec, args=(tcp_msg,))
  # print(tcp_msg.recv(1024).decode('gbk'))
  # 6.開線程循環(huán)發(fā)送消息
  msg_send = threading.Thread(target=speak_send, args=(tcp_msg,))
  msg_rec.start()
  msg_send.start()
  msg_rec.join()
  msg_send.join()
  # 7.關(guān)閉
  # tcp_msg.close()
def main():
  # 1創(chuàng)建TCP對象
  tcp_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  # 2.綁定ip和端口
  tcp_sock.bind(('', 9999))
  # 3.改主動為被動
  tcp_sock.listen(128)
  # 4.accept接收msg和ip
  while True:
    tcp_msg, ip = tcp_sock.accept()
    process = multiprocessing.Process(target=speak_process, args=(tcp_sock, tcp_msg, ip))
    process.start()
if __name__ == '__main__':
  main()

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python進(jìn)程與線程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》、《Python+MySQL數(shù)據(jù)庫程序設(shè)計入門教程》及《Python常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • Fiddler如何抓取手機APP數(shù)據(jù)包

    Fiddler如何抓取手機APP數(shù)據(jù)包

    Fiddler,這個是所有軟件開發(fā)者必備神器!這款工具不僅可以抓取PC上開發(fā)web時候的數(shù)據(jù)包,而且可以抓取移動端,通過本文給大家介紹Fiddler如何抓取手機APP數(shù)據(jù)包,感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • Python 中如何寫注釋

    Python 中如何寫注釋

    這篇文章主要介紹了如何在 Python 中注釋,幫助其他開發(fā)者理解你的代碼,以及代碼的目的。感興趣的朋友可以了解下
    2020-08-08
  • python中列表添加的四種方法小結(jié)

    python中列表添加的四種方法小結(jié)

    這篇文章主要介紹了python中列表添加的四種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python 深入了解GIL鎖詳細(xì)

    python 深入了解GIL鎖詳細(xì)

    這篇文章主要介紹了python 深入了解GIL鎖,python的使用者都知道Cpython解釋器有一個弊端,真正執(zhí)行時同一時間只會有一個線程執(zhí)行,這是由于設(shè)計者當(dāng)初設(shè)計的一個缺陷,里面有個叫GIL鎖的,但他到底是什么,接下來和小編一起進(jìn)入下面文章詳細(xì)內(nèi)容吧
    2021-10-10
  • 在Django中管理Users和Permissions以及Groups的方法

    在Django中管理Users和Permissions以及Groups的方法

    這篇文章主要介紹了在Django中管理Users和Permissions以及Groups的方法,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • Python?Flask?實現(xiàn)?HTML?文件壓縮案例代碼(9?級壓縮)

    Python?Flask?實現(xiàn)?HTML?文件壓縮案例代碼(9?級壓縮)

    這篇文章主要介紹了Python?Flask?實現(xiàn)?HTML?文件壓縮案例代碼(9?級壓縮),本案例是基于?Python?Flask?進(jìn)行搭建,所以需要提前搭建一個?Flask?項目環(huán)境,有?app.py?文件和?templates/index.html?文件即可,需要的朋友可以參考下
    2023-01-01
  • 對python中的try、except、finally 執(zhí)行順序詳解

    對python中的try、except、finally 執(zhí)行順序詳解

    今天小編就為大家分享一篇對python中的try、except、finally 執(zhí)行順序詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python 類中引用其他類的實現(xiàn)示例

    Python 類中引用其他類的實現(xiàn)示例

    在Python中,類的引用是通過屬性或方法與其他類實例關(guān)聯(lián),實現(xiàn)復(fù)雜邏輯,本文介紹了關(guān)聯(lián)、組合等類之間的引用方式,具有一定的參考價值,感興趣的可以了解一下
    2024-09-09
  • python基礎(chǔ)之多態(tài)

    python基礎(chǔ)之多態(tài)

    這篇文章主要介紹了python多態(tài),實例分析了Python中返回一個返回值與多個返回值的方法,需要的朋友可以參考下
    2021-10-10
  • Python 中獲取數(shù)組的子數(shù)組示例詳解

    Python 中獲取數(shù)組的子數(shù)組示例詳解

    在 Python 中獲取一個數(shù)組的子數(shù)組時,可以使用切片操作,使用切片操作來獲取一個數(shù)組的一段連續(xù)的子數(shù)組,并且還可以使用一些方便的語法來簡化代碼,這篇文章主要介紹了如何在 Python 中獲取數(shù)組的子數(shù)組,需要的朋友可以參考下
    2023-05-05

最新評論

城口县| 会泽县| 资中县| 合阳县| 民乐县| 栾川县| 黑龙江省| 沧州市| 龙岩市| 冀州市| 吉木萨尔县| 绍兴市| 灵丘县| 库尔勒市| 株洲市| 永靖县| 平阴县| 莱州市| 岳阳县| 区。| 南昌县| 昆明市| 清苑县| 通榆县| 广西| 桐柏县| 桑植县| 团风县| 漳州市| 萝北县| 池州市| 临邑县| 桐乡市| 武清区| 河西区| 临沧市| 德化县| 互助| 屯留县| 芦山县| 抚州市|