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...