91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

柳河县| 盖州市| 云霄县| 麻城市| 烟台市| 长阳| 信阳市| 瑞安市| 玛多县| 邹平县| 乌拉特前旗| 金阳县| 突泉县| 荆门市| 习水县| 鄂托克旗| 虹口区| 三亚市| 阿拉善右旗| 永州市| 河池市| 中方县| 临湘市| 金乡县| 广水市| 金门县| 赤峰市| 紫云| 灵山县| 淮阳县| 玉田县| 玉溪市| 浏阳市| 保定市| 靖安县| 韩城市| 民县| 平果县| 府谷县| 珲春市| 双柏县|