线程 - 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()

 

posted @ 2018-09-12 22:27  Woowo  阅读(127)  评论(0)    收藏  举报