摘要:總的來說是對補救多線程在多核操作系統(tǒng)中的一副良藥。更多的推薦大家使用模塊。假定這是你的銀行存款先存后取,結(jié)果應(yīng)該為運行的結(jié)果是預(yù)想的另外再服務(wù)器中會大量使用多進程的方式,,等
官方文檔:multiprocessing is a package that supports spawning processes using an API similar to the threading module. The multiprocessing package offers both local and remote concurrency, effectively side-stepping the Global Interpreter Lock by using subprocesses instead of threads。
總的來說是對補救Python多線程在多核操作系統(tǒng)中的一副良藥。更多的推薦大家使用multiprocessing 模塊。
一些簡單使用技巧見介紹
http://blog.csdn.net/dutsoft/...
廖雪峰python教程之多進程
其中最大的區(qū)別在于 多線程和多進程最大的不同在于,多進程中,同一個變量,各自有一份拷貝存在于每個進程中,互不影響,而多線程中,所有變量都由所有線程共享
運行環(huán)境 Python2.7 ,windows
import time, threading # 假定這是你的銀行存款: balance = 0 def change_it(n): # 先存后取,結(jié)果應(yīng)該為0: global balance balance = balance + n balance = balance - n def run_thread(n): for i in range(100000): change_it(n) t1 = threading.Thread(target=run_thread, args=(5,)) t2 = threading.Thread(target=run_thread, args=(8,)) t1.start() t2.start() t1.join() t2.join() print(balance)
運行的結(jié)果會是一個隨機數(shù),就是因為Python的多線程是不安全的,線程之間的調(diào)度會影響到其他線程的結(jié)果。
#coding=utf-8 import time, threading lock = threading.Lock() # 假定這是你的銀行存款: balance = 0 def change_it(n): # 先存后取,結(jié)果應(yīng)該為0: global balance balance = balance + n balance = balance - n def run_thread(n): for i in range(100000): lock.acquire() try: change_it(n) finally: lock.release() t1 = threading.Thread(target=run_thread, args=(5,)) t2 = threading.Thread(target=run_thread, args=(8,)) t1.start() t2.start() t1.join() t2.join() print(balance)
運行的結(jié)果是預(yù)想的0
另外再web服務(wù)器中會大量使用多進程的方式,gunicorn,uwsgi等
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41247.html
摘要:中單線程多線程與多進程的效率對比實驗多線程多進程中多線程和多進程的對比是運行在解釋器中的語言,查找資料知道,中有一個全局鎖,在使用多進程的情況下,不能發(fā)揮多核的優(yōu)勢。 title: Python中單線程、多線程與多進程的效率對比實驗date: 2016-09-30 07:05:47tags: [多線程,多進程,Python]categories: [Python] meta: Pyt...
摘要:在一個進程內(nèi)部,要同時干多件事,就需要同時運行多個子任務(wù),我們把進程內(nèi)的這些子任務(wù)稱為線程??偨Y(jié)一下,多任務(wù)的實現(xiàn)方式有三種多進程模式多線程模式多進程多線程模式線程是最小的執(zhí)行單元,而進程由至少一個線程組成。 進程與線程 很多同學(xué)都聽說過,現(xiàn)代操作系統(tǒng)比如Mac OS X,UNIX,Linux,Windows等,都是支持多任務(wù)的操作系統(tǒng)。 什么叫多任務(wù)呢?簡單地說,就是操作系統(tǒng)可以同時...
摘要:本文重點掌握異步編程的相關(guān)概念了解期物的概念意義和使用方法了解中的阻塞型函數(shù)釋放的特點。一異步編程相關(guān)概念阻塞程序未得到所需計算資源時被掛起的狀態(tài)。 導(dǎo)語:本文章記錄了本人在學(xué)習(xí)Python基礎(chǔ)之控制流程篇的重點知識及個人心得,打算入門Python的朋友們可以來一起學(xué)習(xí)并交流。 本文重點: 1、掌握異步編程的相關(guān)概念;2、了解期物future的概念、意義和使用方法;3、了解Python...
摘要:并發(fā)的方式有多種,多線程,多進程,異步等。多線程和多進程之間的場景切換和通訊代價很高,不適合密集型的場景關(guān)于多線程和多進程的特點已經(jīng)超出本文討論的范疇,有興趣的同學(xué)可以自行搜索深入理解。 編程中,我們經(jīng)常會遇到并發(fā)這個概念,目的是讓軟件能充分利用硬件資源,提高性能。并發(fā)的方式有多種,多線程,多進程,異步IO等。多線程和多進程更多應(yīng)用于CPU密集型的場景,比如科學(xué)計算的時間都耗費在CPU...
閱讀 936·2021-10-13 09:48
閱讀 3934·2021-09-22 10:53
閱讀 3126·2021-08-30 09:41
閱讀 1954·2019-08-30 15:55
閱讀 2933·2019-08-30 15:55
閱讀 1851·2019-08-30 14:11
閱讀 2214·2019-08-29 13:44
閱讀 776·2019-08-26 12:23