python3 6 多執行緒和多程序

2022-06-15 10:06:12 字數 4117 閱讀 7365

1.多執行緒

#

多執行緒例項

from time import

sleep,ctime

import

threading

#多個函式

deftalk(content,loop):

for x in

range(loop):

print('

start talk:%s %s

' %(content,ctime()))

sleep(3)

defwrite(content,loop):

for x in

range(loop):

print('

start write:%s %s

' %(content,ctime()))

sleep(5)

#定義多個執行緒

threads=

t1=threading.thread(target=talk,args=('

執行緒1開始

',2))

t2=threading.thread(target=write,args=('

執行緒2開始

',2))

#執行執行緒

if__name__=='

__main__':

for x in

threads:

x.start()

for x in

threads:

x.join()

#執行緒守護,保證每個執行緒都執行完成

print('

over %s

' %ctime())

2.多執行緒鎖

python中有兩種鎖,乙個鎖是原始的鎖(原語), 不可重入,而另一種鎖則是可重入的鎖即遞迴鎖。而是thread模組中,只提供了不可重入的鎖,而在threading中則提供這兩種鎖。

可重入:當乙個執行緒擁有乙個鎖的使用權後,再次獲取鎖的使用權時,不會阻塞,會立馬得到使用權,則原始鎖的話,則不行,會阻塞。

方法一、thread不可重入鎖

import

thread

import

time

lock =thread.allocate_lock()

defcount(id):

global

num;

while

true:

lock.acquire()

if num <= 10:

print

"thread id is : %s the num is %s\n

" %(id, str(num))

num = num + 1

else

:

break

lock.release()

else

: thread.exit_thread() if

__name__ == "

__main__":

num = 1thread.start_new_thread(count, ('a

',))

thread.start_new_thread(count, ('b

',))

time.sleep(5)

方法二、theading的lock(不可重入鎖)

import

threading

import

time

lock =threading.lock()

defcount(id):

global

num;

while

true:

lock.acquire()

if num <= 10:

print

"thread id is : %s the num is %s\n

" %(id, str(num))

num = num + 1

else

:

break

lock.release() if

__name__ == "

__main__":

num = 1t1 = threading.thread(target=count, args=('a'

, ))

t2 = threading.thread(target=count, args=('b'

, ))

t1.start()

t2.start()

time.sleep(5)

方法三:threading的rlock(可重入)

import

threading

import

time

lock =threading.rlock()

defcountnum(id):

global

num

lock.acquire()

if num <= 10:

print

"thread id is : %s the num is %s\n

" %(id, str(num))

num = num + 1countnum(id)

lock.release() if

__name__ == "

__main__":

num = 1t1 = threading.thread(target=countnum, args=('a'

)) t1.start()

time.sleep(5)

3、多程序例項

#

多程序例項

from time import

sleep,ctime

from multiprocessing import

process

#多個函式

deftalk(content,loop):

for x in

range(loop):

print('

start talk:%s %s

' %(content,ctime()))

sleep(2)

defwrite(content,loop):

for x in

range(loop):

print('

start write:%s %s

' %(content,ctime()))

sleep(3)

#定義多個執行緒

processes=

p1=process(target=talk,args=('

程序1開始

',2))

p2=process(target=write,args=('

程序2開始

',2))

#執行執行緒

if__name__=='

__main__':

for x in

processes:

x.start()

for x in

processes:

x.join()

#執行緒守護,保證每個執行緒都執行完成

print('

over %s

' %ctime())

4.多程序鎖

from multiprocessing import

process,lock

#執行緒的鎖是為了防止共享資料產生錯誤,從而加鎖保重每次運算元據只有乙個執行緒

#程序的鎖是為了在共享螢幕時不會出錯,比如列印時不會打亂了

deff(l,i):

l.acquire()

try:

print('

hello world

',i)

finally

: l.release()

if__name__ == '

__main__':

lock =lock()

for num in range(10):

process(target=f,args=(lock,num)).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 ...