執行緒與程序之間的關係與區別:
關係:1,乙個執行緒只能屬於乙個程序,乙個程序可以有多個執行緒,但至少有乙個執行緒。
2,同一程序的執行緒共享該程序的所有資源。
3,處理機上真正執行的是執行緒
4,執行緒執行需要協作同步。不同執行緒可通過訊息同步實現執行緒通訊。
區別:1,排程:執行緒是排程和分配的基本單位,程序是擁有資源的基本單位
2,併發:程序可以併發執行,同一程序間的多個執行緒也可以併發執行。
3,系統開銷:系統中主要進行資源**的地方是堆,堆是執行緒共有的,也就是程序所有的資源,所有建立執行緒的開銷比建立程序的小很多。
一.測試例子
def a():
for x in range(3):
print("a=x", x)
def b():
for x in "abc":
print("b=x", x)
a()b()
效果:
二.多執行緒執行
#import執行緒模組
import threading
import time
def a():
for x in range(3):
#為了做出效果,這裡使用time模組的sleep方法,在生產環境千萬不能使用
time.sleep(0.0001)
print("a=x", x)
def b():
for x in "abdc":
print("b=x", x)
a()b()
threading.thread(target=a).start()
threading.thread(target=b).start()
效果:
三.多程序
import time
import multiprocessing
def a():
for x in range(3):
#為了做出效果,這裡使用time模組的sleep方法,在生產環境千萬不能使用
time.sleep(0.0001)
print("a=x", x)
def b():
for x in "abdc":
time.sleep(0.0001)
print("b=x", x)
if __name__ == "__main__":
multiprocessing.process(target=a).start()
multiprocessing.process(target=b).start()
效果:
python 多執行緒 和 多程序
單執行緒例子 usr bin python coding utf 8 name danxiancheng.py import time import threading def loop num,sec print loop s start num,time.strftime y m d h m s...
python多執行緒和多程序
pool 感謝多執行緒和多程序最大的不同在於,多程序中,同乙個變數,各自有乙份拷貝存在於每個程序中,互不影響 而多執行緒中,所有變數都由所有執行緒共享,所以,任何乙個變數都可以被任何乙個執行緒修改,因此,執行緒之間共享資料最大的危險在於多個執行緒同時改乙個變數,把內容給改亂了。python中,多執行...
多程序和多執行緒python
coding utf8 import threading import time class mop floor threading.thread def init self super mop floor,self init def run self print 我要拖地了 time.sleep ...