Process

 1 import socket
 2 import time
 3 from multiprocessing import Process
 4 
 5 def talk(conn):
 6     if type(conn)==socket.socket():
 7         conn.send(b'connected')
 8         msg = conn.recv(1024)
 9         print(msg)
10         conn.close()
11 
12 
13 if __name__ == '__main__':
14     sk = socket.socket()
15     sk.bind(('127.0.0.1',8080))
16     sk.listen()
17     while True:
18         conn,addr = sk.accept()
19         print(addr,time.ctime())
20         p = Process(target=talk,args=(conn,))
21         p.start()
22 
23     sk.close()

Lock

 1 # from multiprocessing import Lock
 2 # lock = Lock()
 3 # lock.acquire()  # 需要锁,拿钥匙
 4 # lock.acquire()  # 需要锁,阻塞
 5 # lock.release()  # 释放锁,还钥匙
 6 
 7 # 锁 就是在并发编程中,保证数据安全
 8 
 9 # 多进程 实现并发
10 
11 import json
12 import time
13 import random
14 from multiprocessing import Lock
15 from multiprocessing import Process
16 
17 # with open('ticket','w') as f:
18 #     json.dump({'count':20},f)
19 
20 
21 def search(i):
22     with open('ticket') as f:
23         print(i,json.load(f)['count'])
24 def get(i):
25     with open('ticket') as f:
26         ticket_num = json.load(f)['count']
27     time.sleep(random.random())
28     if ticket_num>0:
29         with open('ticket','w') as f:
30             json.dump({'count':ticket_num-1},f)
31         print('%s买到票了'%i)
32     else:
33         print('%s没票了'%i)
34 def task(i,lock):
35     search(i)
36     lock.acquire()
37     get(i)
38     lock.release()
39 if __name__ == '__main__':
40     pass
41 
42     lock = Lock()
43     for i in range(20):
44         p = Process(target=task,args=(i,lock))
45         p.start()
View Code

相关文章: