File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -15,8 +15,18 @@ class EQSN(object):
1515 All functions are threadsafe, but at the moment, only one instance should be
1616 used.
1717 """
18+ __instance = None
19+
20+ @staticmethod
21+ def get_instance ():
22+ if EQSN .__instance is None :
23+ return EQSN ()
24+ return EQSN .__instance
1825
1926 def __init__ (self ):
27+ if EQSN .__instance is not None :
28+ raise ValueError ("Use get instance to get this class" )
29+ EQSN .__instance = self
2030 self .manager = multiprocessing .Manager ()
2131 self .shared_dict = SharedDict .get_instance ()
2232 cpu_count = multiprocessing .cpu_count ()
@@ -51,6 +61,7 @@ def stop_all(self):
5161 p .join ()
5262 self .shared_dict .stop_shared_dict ()
5363 self .process_picker .stop_process_picker ()
64+ EQSN .__instance = None
5465
5566 def X_gate (self , q_id ):
5667 """
Original file line number Diff line number Diff line change 33
44
55def test_epr_creation ():
6- q_sim = EQSN ()
6+ q_sim = EQSN . get_instance ()
77 id1 = str (1 )
88 id2 = str (2 )
99 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 33import time
44
55def test_x_gate ():
6- q_sim = EQSN ()
6+ q_sim = EQSN . get_instance ()
77 id = str (10 )
88 q_sim .new_qubit (id )
99 q_sim .X_gate (id )
@@ -14,8 +14,8 @@ def test_x_gate():
1414
1515
1616def test_y_gate ():
17- q_sim = EQSN ()
18- id = str (10 )
17+ q_sim = EQSN . get_instance ()
18+ id = str (11 )
1919 q_sim .new_qubit (id )
2020 q_sim .Y_gate (id )
2121 q_sim .Y_gate (id )
@@ -26,7 +26,7 @@ def test_y_gate():
2626
2727
2828def test_z_gate ():
29- q_sim = EQSN ()
29+ q_sim = EQSN . get_instance ()
3030 id = str (10 )
3131 q_sim .new_qubit (id )
3232 q_sim .Z_gate (id )
@@ -37,7 +37,7 @@ def test_z_gate():
3737
3838
3939def test_H_gate ():
40- q_sim = EQSN ()
40+ q_sim = EQSN . get_instance ()
4141 id = str (10 )
4242 q_sim .new_qubit (id )
4343 q_sim .H_gate (id )
@@ -48,7 +48,7 @@ def test_H_gate():
4848
4949
5050def test_T_gate ():
51- q_sim = EQSN ()
51+ q_sim = EQSN . get_instance ()
5252 id = str (10 )
5353 q_sim .new_qubit (id )
5454 q_sim .T_gate (id )
@@ -70,7 +70,7 @@ def test_T_gate():
7070
7171
7272def test_S_gate ():
73- q_sim = EQSN ()
73+ q_sim = EQSN . get_instance ()
7474 id = str (11 )
7575 q_sim .new_qubit (id )
7676 q_sim .H_gate (id )
@@ -84,7 +84,7 @@ def test_S_gate():
8484
8585
8686def test_K_gate ():
87- q_sim = EQSN ()
87+ q_sim = EQSN . get_instance ()
8888 print ("test K gate." )
8989 id = str (11 )
9090 q_sim .new_qubit (id )
@@ -99,7 +99,7 @@ def test_K_gate():
9999
100100
101101def test_measure ():
102- q_sim = EQSN ()
102+ q_sim = EQSN . get_instance ()
103103 id = str (10 )
104104 q_sim .new_qubit (id )
105105 res = q_sim .measure (id )
@@ -118,4 +118,4 @@ def test_measure():
118118 test_measure ]
119119 for func in test_list :
120120 func ()
121- time .sleep (0.05 )
121+ time .sleep (0.1 )
You can’t perform that action at this time.
0 commit comments