中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python基于進程池實現多進程的方法

發布時間:2020-07-29 11:14:11 來源:億速云 閱讀:328 作者:小豬 欄目:開發技術

這篇文章主要講解了Python基于進程池實現多進程的方法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

1、注意:pool必須在 if __name__ == '__main__' 下面運行,不然會報錯

2、多進程內出現錯誤會直接跳過該進程,并且默認不會打印錯誤信息

3、if__name__下面的數據需要通過參數傳入主函數里面,不然主函數獲取不到該數據值而報錯。

4、若不通過傳參形式傳入數據,可以定義全局變量。但是全局變量的值不能在多進程里面進行修改。

代碼如下

from multiprocessing import Pool # 進程池,用于多進程
import os # 用于獲取當前執行的文件名
import time
import traceback # 用于捕獲異常
import sys # 用于捕獲異常


def main_func(i): # 多進程運行的函數
  try: # 多進程中發生異常是不會打印錯誤信息,并且當前進程會直接跳過,所以異常需要自行捕獲
    rand_time = random.randint(1, 3) # 隨機產生1~3的整數
    time.sleep(rand_time )
    print(i)
  except:
    current_filename = str(os.path.basename(sys.argv[0]))[:-3] # 獲取當前文件名稱
    cur_err_filname = current_filename + '_error.txt'
    error_info = sys.exc_info() # 打印異常
    with open(f'{cur_err_filname }', 'a') as f:
      error_str = f'{i}:ERROR OCCURRED,{time.strftime("%Y-%m-%d %H:%M:%S")}:\n {error_info[0]}: {error_info[1]}' # 記錄當前進程特征值,錯誤發生時間 ,錯誤類型,錯誤概述
      print(error_str, file=f) # 通過打印方式寫入文件
      traceback.print_tb(error_info[2], file=f) # 錯誤細節描述(包括bug的代碼位置)
      f.write(f"{'=' * 50}\n") # 分行


if __name__ == '__main__': # 必須在此語句下面運行,不然會報錯
  pool = Pool(5) # 定義進程數量
  for i in range(20):
    pool.apply_async(main_func, (i, )) # 調用函數執行多進程
  pool.close() # 關閉進程池
  pool.join() # 阻塞進程,此兩部不能少,保證多進程正常運行

看完上述內容,是不是對Python基于進程池實現多進程的方法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泾源县| 南康市| 宜昌市| 青铜峡市| 丘北县| 昭平县| 乐陵市| 睢宁县| 天柱县| 磐安县| 松潘县| 泗阳县| 璧山县| 晋城| 项城市| 贵德县| 库伦旗| 攀枝花市| 巨鹿县| 防城港市| 察哈| 孟村| 台江县| 东兰县| 吉首市| 桂林市| 崇信县| 南川市| 莱阳市| 赣州市| 沽源县| 武山县| 石渠县| 饶河县| 县级市| 莲花县| 大厂| 沂源县| 治多县| 永城市| 邯郸市|