线程 - threading
import threading import time g_num = 0 def func1(num): global g_num for i in range(num): g_num += 1 print('in fun1 g_num = %d'%g_num) def func2(num): global g_num for i in range(num): g_num += 1 print('in fun2 g_num = %d'%g_num) def main(): t1 = threading.Thread(target=func1,args=(1000000,)) t2 = threading.Thread(target=func2,args=(1000000,)) t1.start() t2.start() # t1.join() # t2.join() time.sleep(5) print('in main thread g_num =%d'%g_num) if __name__ == '__main__': main()
import threading import time g_num = 0 def func1(num): global g_num for i in range(num): mutex.acquire() g_num += 1 mutex.release() print('in fun1 g_num = %d'%g_num) def func2(num): global g_num for i in range(num): mutex.acquire() g_num += 1 mutex.release() print('in fun2 g_num = %d'%g_num) mutex = threading.Lock() def main(): t1 = threading.Thread(target=func1,args=(1000000,)) t2 = threading.Thread(target=func2,args=(1000000,)) t1.start() t2.start() t1.join() t2.join() # time.sleep(5) print('in main thread g_num =%d'%g_num) if __name__ == '__main__': main()
多线程udp聊天器
import socket import threading def recv_data(sk): while True: msg,addr = sk.recvfrom(1024) print(msg.decode('gbk')) def send_data(sk,ip,port): while True: data = input('msg:') data += '\n' data = data.encode('gbk') sk.sendto(data,(ip,port)) def main(): sk = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) sk.bind(('',7788)) ip = '127.0.0.1' port = 8080 t1 = threading.Thread(target=send_data,args=(sk,ip,port)) t2 = threading.Thread(target=recv_data,args=(sk,)) t1.start() t2.start() if __name__ == '__main__': main()