File tree Expand file tree Collapse file tree 4 files changed +54
-11
lines changed Expand file tree Collapse file tree 4 files changed +54
-11
lines changed Original file line number Diff line number Diff line change @@ -15,8 +15,18 @@ class EQSN(object):
15
15
All functions are threadsafe, but at the moment, only one instance should be
16
16
used.
17
17
"""
18
+ __instance = None
19
+
20
+ @staticmethod
21
+ def get_instance ():
22
+ if EQSN .__instance is None :
23
+ return EQSN ()
24
+ return EQSN .__instance
18
25
19
26
def __init__ (self ):
27
+ if EQSN .__instance is not None :
28
+ raise ValueError ("Use get instance to get this class" )
29
+ EQSN .__instance = self
20
30
self .manager = multiprocessing .Manager ()
21
31
self .shared_dict = SharedDict .get_instance ()
22
32
cpu_count = multiprocessing .cpu_count ()
@@ -51,6 +61,7 @@ def stop_all(self):
51
61
p .join ()
52
62
self .shared_dict .stop_shared_dict ()
53
63
self .process_picker .stop_process_picker ()
64
+ EQSN .__instance = None
54
65
55
66
def X_gate (self , q_id ):
56
67
"""
Original file line number Diff line number Diff line change 3
3
4
4
5
5
def test_epr_creation ():
6
- q_sim = EQSN ()
6
+ q_sim = EQSN . get_instance ()
7
7
id1 = str (1 )
8
8
id2 = str (2 )
9
9
q_sim .new_qubit (id1 )
Original file line number Diff line number Diff line change
1
+ from eqsn import EQSN
2
+ import time
3
+
4
+
5
+ def test_get_instance ():
6
+ print ("test get instance..." )
7
+ i1 = EQSN .get_instance ()
8
+ i2 = EQSN .get_instance ()
9
+ assert i1 == i2
10
+ i1 .stop_all ()
11
+ i2 .stop_all ()
12
+ print ("Test succesfull" )
13
+
14
+
15
+ def test_error_at_creating_EQSN_twice ():
16
+ print ("Start error at multiple instances test..." )
17
+ error = False
18
+ i1 = None
19
+ try :
20
+ i1 = EQSN ()
21
+ _ = EQSN ()
22
+ except :
23
+ error = True
24
+ assert error
25
+ print ("Finished test" )
26
+ i1 .stop_all ()
27
+
28
+
29
+ if __name__ == "__main__" :
30
+ test_get_instance ()
31
+ time .sleep (0.1 )
32
+ test_error_at_creating_EQSN_twice ()
Original file line number Diff line number Diff line change 3
3
import time
4
4
5
5
def test_x_gate ():
6
- q_sim = EQSN ()
6
+ q_sim = EQSN . get_instance ()
7
7
id = str (10 )
8
8
q_sim .new_qubit (id )
9
9
q_sim .X_gate (id )
@@ -14,8 +14,8 @@ def test_x_gate():
14
14
15
15
16
16
def test_y_gate ():
17
- q_sim = EQSN ()
18
- id = str (10 )
17
+ q_sim = EQSN . get_instance ()
18
+ id = str (11 )
19
19
q_sim .new_qubit (id )
20
20
q_sim .Y_gate (id )
21
21
q_sim .Y_gate (id )
@@ -26,7 +26,7 @@ def test_y_gate():
26
26
27
27
28
28
def test_z_gate ():
29
- q_sim = EQSN ()
29
+ q_sim = EQSN . get_instance ()
30
30
id = str (10 )
31
31
q_sim .new_qubit (id )
32
32
q_sim .Z_gate (id )
@@ -37,7 +37,7 @@ def test_z_gate():
37
37
38
38
39
39
def test_H_gate ():
40
- q_sim = EQSN ()
40
+ q_sim = EQSN . get_instance ()
41
41
id = str (10 )
42
42
q_sim .new_qubit (id )
43
43
q_sim .H_gate (id )
@@ -48,7 +48,7 @@ def test_H_gate():
48
48
49
49
50
50
def test_T_gate ():
51
- q_sim = EQSN ()
51
+ q_sim = EQSN . get_instance ()
52
52
id = str (10 )
53
53
q_sim .new_qubit (id )
54
54
q_sim .T_gate (id )
@@ -70,7 +70,7 @@ def test_T_gate():
70
70
71
71
72
72
def test_S_gate ():
73
- q_sim = EQSN ()
73
+ q_sim = EQSN . get_instance ()
74
74
id = str (11 )
75
75
q_sim .new_qubit (id )
76
76
q_sim .H_gate (id )
@@ -84,7 +84,7 @@ def test_S_gate():
84
84
85
85
86
86
def test_K_gate ():
87
- q_sim = EQSN ()
87
+ q_sim = EQSN . get_instance ()
88
88
print ("test K gate." )
89
89
id = str (11 )
90
90
q_sim .new_qubit (id )
@@ -99,7 +99,7 @@ def test_K_gate():
99
99
100
100
101
101
def test_measure ():
102
- q_sim = EQSN ()
102
+ q_sim = EQSN . get_instance ()
103
103
id = str (10 )
104
104
q_sim .new_qubit (id )
105
105
res = q_sim .measure (id )
@@ -118,4 +118,4 @@ def test_measure():
118
118
test_measure ]
119
119
for func in test_list :
120
120
func ()
121
- time .sleep (0.05 )
121
+ time .sleep (0.1 )
You can’t perform that action at this time.
0 commit comments