Python多執行緒程式設計

2021-10-02 01:27:28 字數 4139 閱讀 7389

import threading

import time

deffunc

(name)

: time.sleep(3)

print

("子執行緒(%s)啟動"

%threading.current_thread(

).name)

print

("hello "

+name)

print

("子執行緒(%s)結束"

% threading.current_thread(

).name)

time.sleep(3)

if __name__ ==

"__main__"

:print

("主線程(%s)啟動"

%threading.current_thread(

).name)

t = threading.thread(target=func,args=

("fang",)

) t.start(

) t.join(

)print

("主線程(%s)結束"

%threading.current_thread(

).name)

import threading

num=

100local = threading.local(

)def

func

(n):

global num

local.x = num

for i in

range

(10000000):

local.x = local.x-n

local.x = local.x+n

print

(local.x)

if __name__ ==

"__main__"

:print

("主線程(%s)啟動"

%threading.current_thread(

).name)

t1 = threading.thread(target=func,args=(6

,)) t2 = threading.thread(target=func,args=(9

,)) t1.start(

) t2.start(

) t1.join(

) t2.join(

)print

("主線程(%s)結束"

%threading.current_thread(

).name)

print

(num)

import threading

num=

100def

func

(n):

global num

for i in

range

(1000000):

num = num-n

num = num+n

if __name__ ==

"__main__"

:print

("主線程(%s)啟動"

%threading.current_thread(

).name)

t1 = threading.thread(target=func,args=(6

,)) t2 = threading.thread(target=func,args=(9

,)) t1.start(

) t2.start(

) t1.join(

) t2.join(

)print

("主線程(%s)結束"

%threading.current_thread(

).name)

print

(num)

#每次列印的num值都不一樣,這就是多執行緒造成的數混亂

import threading

import time

num=

100lock = threading.lock(

)'''

def func1(n):

global num

for i in range(1000000):

lock.acquire()

num = num - n

num = num + n

#修改完一定要開鎖

lock.release()

'''def

func1

(n):

global num

for i in

range

(100000):

with lock:

num = num - n

num = num + n

if __name__ ==

"__main__"

:print

("主線程(%s)啟動"

%threading.current_thread(

).name)

t3 = threading.thread(target=func1,args=(6

,)) t4 = threading.thread(target=func1,args=(6

,)) t3.start(

) t4.start(

) t3.join(

) t4.join(

)print

("主線程(%s)結束"

%threading.current_thread(

).name)

print

(num)

import threading

import socket

defserver()

: server = socket.socket(socket.af_inet, socket.sock_stream)

server.bind(

('192.168.1.3'

,8081))

server.listen(5)

clientsocket, clientaddress = server.accept(

)while

true

: data = clientsocket.recv(

1024

)print

("收到資料:"

+ data.decode(

'utf-8'))

info =

input

("請輸入:"

) clientsocket.send(info.encode(

'utf-8'))

defclient()

: client = socket.socket(socket.af_inet, socket.sock_stream)

client.connect(

('192.168.1.3'

,8081))

while

true

: data =

input

("請輸入:"

) client.send(data.encode(

'utf-8'))

info = client.recv(

1024

)print

("伺服器說:"

+ info.decode(

'utf-8'))

if __name__ ==

"__main__"

:print

("主線程(%s)啟動"

%threading.current_thread(

).name)

s = threading.thread(target=server)

c = threading.thread(target=client)

s.start(

) c.start(

) s.join(

) c.join(

)

python 多執行緒程式設計

一 執行緒基礎 1 建立執行緒 thread模組提供了start new thread函式,用以建立執行緒。start new thread函式成功建立後還可以對其進行操作。其函式原型 start new thread function,atgs kwargs 其引數含義如下 args 元組形式的引...

python 多執行緒程式設計

一 執行緒基礎 1 建立執行緒 thread模組提供了start new thread函式,用以建立執行緒。start new thread函式成功建立後還能夠對其進行操作。其函式原型 start new thread function,atgs kwargs 其引數含義例如以下 args 元組形式...

python多執行緒程式設計

本文主要學習的執行緒模組是在python3.7版本環境中的threading模組,不涉及另外的乙個執行緒模組 thread。執行緒模組中的屬性和方法 import threading dir threading 下面列表為返回資料 barrier boundedsemaphore brokenbar...