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