標籤:cpu import roc tar thread 操作 需要 多進程 資料共用
# 多線程和多進程
進程:作業系統分配記憶體的基本單位,進程之間的通訊相互隔離,如果要相互交換資料,需要特殊的機制。
線程:一個進程由至少一個線程組成,線程是進程的執行單元,也是作業系統分配CPU的基本單元。
多線程,是為了多的被CPU所啟動。
優點:
1.縮短程式的執行時間,提升效能
2.改善使用者的體驗。
進程
調用方法一: 直接調用 。
直接建立對象Process,並通過target參數指定線程啟動後要執行的任務
from multiprocessing import Process
count = 0
def running(string):
global count
inner = 0
while count < 100:
print(string, end=‘‘, flush=True)
count += 1
inner += 1
print(‘%s列印了%s次‘ % (string, inner))
def main():
t1 = Process(target=running, args=(‘??‘,))
t1.start()
t2 = Process(target=running, args=(‘哼‘,))
t2.start()
if __name__ == ‘__main__‘:
main()
調用方法二: 定義類來調用 -- 間接(推薦)
繼承Process自訂線程,通過重寫run 方法來指定線程啟動後執行的任務
from multiprocessing import Processclass Patten(Process): def __init__(self, string, count): self._string = string self._count = count super(Patten, self).__init__() @property def count(self): return self._count def run(self): for _ in range(self._count): print(self._string, end=‘‘, flush=True)def main(): patten = Patten(‘??‘, 10000) patten2 = Patten(‘??‘, 10000) patten3 = Patten(‘??‘, 10000) patten4 = Patten(‘ヾ(?ω?`)o‘, 10000) patten5 = Patten(‘??‘, 10000) total = patten.count + patten2.count + patten3.count + patten4.count + patten5.count print(total)if __name__ == ‘__main__‘: main()
線程
使用方法同進程,只需要把對象換位Thread 就行。和進程的區別如下:
進程是單獨執行,資料不共用,線程是資料共用執行。
Python第四周之多線程和多進程