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

解決Python3.7.0 SSL低版本導(dǎo)致Pip無法使用問題

 更新時間:2020年09月03日 14:21:49   作者:polkabobo  
這篇文章主要介紹了解決Python3.7.0 SSL低版本導(dǎo)致Pip無法使用問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

終于下決心把python從2.7升到了3.7。懶人安裝當(dāng)然使用Anaconda。

安裝成功,編譯成功。但是用pip 安裝包的時候提示:

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available。

原因是python3.7為了安全性考慮,要求使用openssl 1.0.2之后的版本。但是自帶的openssl,版本是1.0.1。

解決辦法:

重裝一下openssl

進(jìn)入

Anaconda Prompt:

conda install -c anaconda openssl

就一切解決了哈啊哈!完美!

補充知識:Python3使用multiprocessing多進(jìn)程模塊共享變量

在使用Python用CPU跑一個人臉識別的模塊,神經(jīng)網(wǎng)絡(luò)的計算比較耗時,因為Python GIL的限制,因此這里使用多進(jìn)程來并行跑數(shù)據(jù)集。

在多個進(jìn)程之間共享簡單變量

有很多張人臉圖片,現(xiàn)在使用8個進(jìn)程來分別對人臉圖片進(jìn)行識別,但是要知道總的進(jìn)度和正確率,因此這里要在各個進(jìn)程之間共享變量。這里需要的只是整型無符號變量。

在對總的進(jìn)度和準(zhǔn)確率進(jìn)行計算的時候要加鎖,防止別的進(jìn)程改變

在使用 print輸出的時候要加鎖,因為控制臺也是資源,要防止搶占

加鎖了之后要記得釋放鎖

假設(shè)8個進(jìn)程共識別了count張圖片,然后正確的圖片有correct張。思路如下:

在主進(jìn)程中聲明要共享的count和correct變量,初始化進(jìn)程的時候傳入

在各個進(jìn)程中識別一張圖片count就自增1,識別正確的話correct也要自增1,自增的時候要加鎖

控制臺輸出相關(guān)信息的時候也要加鎖

# l代表長整型無符號變量
count = multiprocessing.Value('l', 0)
correct = multiprocessing.Value('l', 0)
lock = multiprocessing.Lock()

# 要運行的函數(shù)為run(),lis為劃分給每個進(jìn)程的識別圖片列表
p = [multiprocessing.Process(target=run, args=(lock, i, count, correct)) for i in lis]

for i in p:
  i.start()
for i in p:
  i.join()

在run函數(shù)中:

# 多個線程對共享變量進(jìn)行操作,加鎖
lock.acquire()
# 圖片已經(jīng)識別完畢,總數(shù)加一
count.value += 1
# 下面兩個if分別為識別正確的情況
if i[0] == 3 and dis >= threshold:
  correct.value += 1
  print("正確率:{0:.5f} 總數(shù):{1} 正確數(shù):{2} 錯誤數(shù):{3} 參數(shù)個數(shù):{4} 向量夾角:{5:.5f} 圖片1:{6} 圖片2:{7}".format(correct.value/count.value, count.value, correct.value, count.value-correct.value, i[0], dis[0], i[1], i[2]))
  lock.release()
  continue
if i[0] == 4 and dis < threshold:
  correct.value += 1
  print("正確率:{0:.5f} 總數(shù):{1} 正確數(shù):{2} 錯誤數(shù):{3} 參數(shù)個數(shù):{4} 向量夾角:{5:.5f} 圖片1:{6} 圖片2:{7}".format(correct.value/count.value, count.value, correct.value, count.value-correct.value, i[0], dis[0], i[1], i[2]))
  lock.release()
  continue
print("識別錯誤:參數(shù)個數(shù):{0} 向量夾角:{1} 圖片1:{2} 圖片2:{3}".format(i[0], dis[0], i[1], i[2]))
# 不要遺漏解鎖,否則進(jìn)程會死鎖
lock.release()

在多個進(jìn)程中共享字典dict

準(zhǔn)備把識別過的照片特征緩存起來,因此這里使用字典,key就是照片名稱,value就是特征值。在此使用mutiprocessing.Manage()來實現(xiàn)。

manager = multiprocessing.Manager()
# 這個是用來在多個進(jìn)程中間共享的字典
sync_dict = manager.dict()
# 這個是使用pickle序列化到文件中用的臨時字典變量
mem_dict = dict()

# 如果存在字典就載入,使用臨時字典中轉(zhuǎn)是因為sysnc_dict直接序列化會在下次加載時導(dǎo)致Manager在多個進(jìn)程中的連接出現(xiàn)問題
if os.path.exists("./muti_thread_mem.pkl"):
  with open("./muti_thread_mem.pkl", "rb") as f:
    mem_dict = pickle.load(f)
  for i in mem_dict:
    sync_dict[i] = mem_dict[i]

使用multiprocessing.Manager()時就不用加鎖了,它本身帶有同步的功能。在run函數(shù)中直接使用就好了。

if i[1] in sync_dict:
 # 有記錄就直接讀取緩存
  encoding1 = sync_dict[i[1]]
else:
 # 沒記錄就計算出來再緩存一下
  face.file = Image.open(prefix+i[1])
  encoding1 = face.encodings
  sync_dict[i[1]] = encoding1
if i[2] in sync_dict:
  encoding2 = sync_dict[i[2]]
else:
  face.file = Image.open(prefix+i[2])
  encoding2 = face.encodings
  sync_dict[i[2]] = encoding2

如果緩存過就直接讀取,如果沒有緩存過就計算后然后再緩存一下,便于下次讀取。大多都是業(yè)務(wù)的邏輯,沒有什么意思。算完了之后在主程序退出之前再緩存到本地就好了。

with open("./muti_thread_mem.pkl", 'wb') as f:
  for k, v in enumerate(sync_dict):
    mem_dict[v] = sync_dict[v]
  if len(mem_dict):
   # 傳入的4就是想試一下Python新版本的特性而已,沒啥其他意思
    pickle.dump(mem_dict, f, 4)

在Pycharm里面運行代碼的時候會碰到一些問題。

使用Pycharm的Python console運行代碼的時候會導(dǎo)致一個進(jìn)程完成任務(wù)之后,join等待主線程退出的時候,所有進(jìn)程都報錯pipe broken連接不到Manager的共享字典。但是使用本地Terminal運行的時候,一個進(jìn)程完成任務(wù)后是不會導(dǎo)致其他進(jìn)程報錯的,因此推斷這里是Pycharm的坑。

關(guān)鍵字:multiprocessing.Manager()報錯pipe broken,進(jìn)程獲取共享變量時異常,導(dǎo)致所有進(jìn)程退出

調(diào)試代碼(Pycharm debug模式)的時候也會導(dǎo)致調(diào)試過程中進(jìn)程連接不到Manager的共享字典變量。

這些坑都涉及到Manager在共享變量時使用的客戶端/服務(wù)端模式,最后socket連接報錯,所有進(jìn)程讀取共享變量時報錯退出。我這次的解決方式是不要啟用Pycharm的Python console來運行代碼就好了。

以上這篇解決Python3.7.0 SSL低版本導(dǎo)致Pip無法使用問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python PyMySQL操作MySQL數(shù)據(jù)庫的方法詳解

    Python PyMySQL操作MySQL數(shù)據(jù)庫的方法詳解

    PyMySQL是一個用于Python編程語言的純Python MySQL客戶端庫,它遵循Python標(biāo)準(zhǔn)DB API接口,并提供了許多方便的功能,本文就來和大家簡單介紹一下吧
    2023-05-05
  • django批量導(dǎo)入xml數(shù)據(jù)

    django批量導(dǎo)入xml數(shù)據(jù)

    從網(wǎng)上下載的一些數(shù)據(jù),excel表格,xml文件,txt文件等有時候我們想把它導(dǎo)入數(shù)據(jù)庫,應(yīng)該如何操作呢?下面我們就來詳細(xì)討論下。
    2016-10-10
  • 解決python中0x80072ee2錯誤的方法

    解決python中0x80072ee2錯誤的方法

    在本篇文章中小編給大家分享的是關(guān)于解決python中0x80072ee2錯誤的方法,需要的朋友們可以參考下。
    2020-07-07
  • python 輸出上個月的月末日期實例

    python 輸出上個月的月末日期實例

    下面小編就為大家分享一篇python 輸出上個月的月末日期實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python工具之清理 Markdown 中沒有引用的圖片

    python工具之清理 Markdown 中沒有引用的圖片

    這篇文章主要介紹了python工具之清理 Markdown 中沒有引用的圖片,文章圍繞主題展開詳細(xì)的的內(nèi)容介紹,需要的朋友可以參考一下
    2022-06-06
  • python簡單的三元一次方程求解實例

    python簡單的三元一次方程求解實例

    這篇文章主要介紹了python簡單的三元一次方程求解實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python自動發(fā)送和收取郵件的方法

    Python自動發(fā)送和收取郵件的方法

    這篇文章主要介紹了Python自動發(fā)送和收取郵件的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • python通過re正則表達(dá)式切割中英文的操作

    python通過re正則表達(dá)式切割中英文的操作

    這篇文章主要介紹了python通過re正則表達(dá)式切割中英文的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python編程開發(fā)之日期操作實例分析

    python編程開發(fā)之日期操作實例分析

    這篇文章主要介紹了python編程開發(fā)之日期操作,以實例形式較為詳細(xì)的分析了Python中datetime與time庫的相關(guān)使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • Python實現(xiàn)Windows上氣泡提醒效果的方法

    Python實現(xiàn)Windows上氣泡提醒效果的方法

    這篇文章主要介紹了Python實現(xiàn)Windows上氣泡提醒效果的方法,涉及Python針對windows窗口操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06

最新評論

历史| 准格尔旗| 高安市| 申扎县| 三都| 孟村| 米易县| 于田县| 谢通门县| 惠水县| 化州市| 五大连池市| 缙云县| 肥东县| 平谷区| 小金县| 雅江县| 新安县| 栖霞市| 澎湖县| 广丰县| 周宁县| 蒙自县| 辉南县| 民勤县| 呼伦贝尔市| 富源县| 建湖县| 辰溪县| 祁门县| 嘉鱼县| 化德县| 原阳县| 南澳县| 井陉县| 巴彦县| 星子县| 江永县| 梅州市| 襄垣县| 巴彦淖尔市|