亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

新平| 杨浦区| 黑龙江省| 廊坊市| 博客| 册亨县| 清新县| 遂溪县| 肥东县| 泰来县| 庆城县| 闽清县| 绥中县| 丰城市| 武鸣县| 西乌| 池州市| 巧家县| 兰溪市| 东莞市| 越西县| 玛沁县| 迁西县| 乐安县| 高青县| 新民市| 武宁县| 黄石市| 嘉祥县| 如东县| 威宁| 怀仁县| 新平| 那坡县| 土默特左旗| 南乐县| 新田县| 太仆寺旗| 吉隆县| 宣恩县| 安新县|