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

溫馨提示×

溫馨提示×

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

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

multiprocessing Pool怎么在Python中使用

發布時間:2021-05-10 17:39:03 來源:億速云 閱讀:148 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關multiprocessing Pool怎么在Python中使用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

python有哪些常用庫

python常用的庫:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。

1. 背景

由于需要寫python程序, 定時、大量發送htttp請求,并對結果進行處理。

參考其他代碼有進程池,記錄一下。

2. 多進程 vs 多線程

  • c++程序中,單個模塊通常是單進程,會啟動幾十、上百個線程,充分發揮機器性能。(目前c++11有了std::thread編程多線程很方便,可以參考我之前的博客)

  • shell腳本中,都是多進程后臺執行。({ ...} &, 可以參考我之前的博客,實現shell并發處理任務)

  • python腳本有多線程和多進程。由于python全局解鎖鎖的GIL的存在,一般建議 CPU密集型應該采用多進程充分發揮多核優勢,I/O密集型可以采用多線程。

盡管Python完全支持多線程編程, 但是解釋器的C語言實現部分在完全并行執行時并不是線程安全的。
實際上,解釋器被一個全局解釋器鎖保護著,它確保任何時候都只有一個Python線程執行。
GIL最大的問題就是Python的多線程程序并不能利用多核CPU的優勢 (比如一個使用了多個線程的計算密集型程序只會在一個單CPU上面運行)。

3. multiprocessing pool使用例子

對Pool對象調用join()方法會等待所有子進程執行完畢,調用join()之前必須先調用close(),讓其不再接受新的Process了

#coding=utf-8
import logging
import time
from multiprocessing import Pool
logging.basicConfig(level=logging.INFO, filename='logger.log')
class Point:
  def __init__(self, x = 0, y= 0):
    self.x = x
    self.y = y
  def __str__(self):
    return "(%d, %d)" % (self.x, self.y)
def fun1(point):
  point.x = point.x + 3
  point.y = point.y + 3
  time.sleep(1)
  return point
def fun2(x):
  time.sleep(1)
  logging.info(time.ctime() + ", fun2 input x:" + str(x))
  return x * x
if __name__ == '__main__':
  pool = Pool(4)
  #test1
  mylist = [x for x in range(10)]
  ret = pool.map(fun2, mylist)
  print ret
  #test2
  mydata = [Point(x, y) for x in range(3) for y in range(2)]
  res = pool.map(fun1, mydata)
  for i in res:
    print str(i)
  #end
  pool.close()
  pool.join()
  print "end"

運行結果:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
(3, 3)
(3, 4)
(4, 3)
(4, 4)
(5, 3)
(5, 4)
end

關于multiprocessing Pool怎么在Python中使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

平泉县| 泸溪县| 渝北区| 米泉市| 六安市| 江油市| 恩平市| 贵阳市| 景宁| 眉山市| 莱西市| 泰兴市| 积石山| 衢州市| 永康市| 日喀则市| 木兰县| 且末县| 舒兰市| 遂川县| 屯昌县| 涿州市| 全南县| 十堰市| 巴东县| 水城县| 岳普湖县| 额尔古纳市| 鄂托克前旗| 齐河县| 庐江县| 台南县| 永川市| 白山市| 马公市| 仁寿县| 昆山市| 深州市| 遂溪县| 洛浦县| 武冈市|