-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmain_multithreading.py
More file actions
101 lines (66 loc) · 2.42 KB
/
main_multithreading.py
File metadata and controls
101 lines (66 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
"""Launch multiple peers in separate processes for local testing.
This script starts three peers with auto-generated UUIDs and staggers their
startup to reduce contention.
"""
import multiprocessing
import time
import Peer
import Peer_utils
#initialize two peers
#start peer1 listening socket in a separate process
def peer1stuff(peer1address, peer1port):
"""Run a peer instance in the current process.
Args:
peer1address (str): Local IP address for the peer.
peer1port (int): TCP port for the peer's server socket.
"""
peer1 = Peer.Peer(address=peer1address, port=peer1port)
peer1.start()
#start peer2 listening socket in a separate process
def peer2stuff(peer2address, peer2port):
"""Run a second peer instance in the current process.
Args:
peer2address (str): Local IP address for the peer.
peer2port (int): TCP port for the peer's server socket.
"""
peer2 = Peer.Peer(address=peer2address, port=peer2port)
peer2.start()
#start peer2 listening socket in a separate process
def peer3stuff(peer3address, peer3port):
"""Run a third peer instance in the current process.
Args:
peer3address (str): Local IP address for the peer.
peer3port (int): TCP port for the peer's server socket.
"""
peer3 = Peer.Peer(address=peer3address, port=peer3port)
peer3.start()
if __name__ == '__main__':
peer1address = Peer_utils.get_local_ip()
peer1port = Peer_utils.get_free_port()
peer2address = Peer_utils.get_local_ip()
peer2port = Peer_utils.get_free_port()
peer3address = Peer_utils.get_local_ip()
peer3port = Peer_utils.get_free_port()
process1 = multiprocessing.Process(
target=peer1stuff,
args=(peer1address, peer1port)
)
process1.daemon = True
process2 = multiprocessing.Process(
target=peer2stuff,
args=(peer2address, peer2port)
)
process2.daemon = True
process3 = multiprocessing.Process(
target=peer3stuff,
args=(peer3address, peer3port)
)
process3.daemon = True
process2.start()
time.sleep(5) # Ensure peer2 starts before peer1
process1.start()
time.sleep(5) # Ensure peer1 starts before peer3
process3.start()
process2.join()
process1.join()
process3.join()