Guest User

Untitled

a guest
Jul 21st, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.34 KB | None | 0 0
  1. import copy
  2. import pickle
  3.  
  4. with open(r'*********************************', "rb") as f:
  5. total_nearest_cell_generate_trip_nested_list=pickle.load(f)
  6. with open(r'**********************************', "rb") as f:
  7. OD_cell=pickle.load(f)
  8.  
  9.  
  10. from collections import deque
  11. from operator import itemgetter
  12. def is_ordered_sublist(sublst, lst):
  13. sublst = deque(sublst)
  14. for x in lst:
  15. if not sublst:
  16. # return True early if the stack is empty
  17. return True
  18.  
  19. if x == sublst[0]:
  20. sublst.popleft()
  21.  
  22. return not sublst
  23.  
  24.  
  25.  
  26.  
  27. import threading
  28. import time
  29. thread_time=time.time()
  30. class thread_by_thread (threading.Thread):
  31. def __init__(self,n):
  32. threading.Thread.__init__(self)
  33. self.n = n-1
  34. self.period_time_i = total_nearest_cell_generate_trip_nested_list[self.n]
  35. self.total_nearest_cell_generate_trip_nested_list_new=[]
  36. def run(self):
  37. period_time = self.period_time_i[0][6]
  38. total_nearest_cell_generate_trip_nested_list_2=copy.deepcopy(total_nearest_cell_generate_trip_nested_list)
  39. del total_nearest_cell_generate_trip_nested_list_2[self.n]
  40. total_nearest_cell_generate_trip_nested_list_2_other_flatten=[subsublist for sublist in total_nearest_cell_generate_trip_nested_list_2 for subsublist in sublist ]
  41. for cell in OD_cell:
  42. #OD_cell_deepcopy=copy.deepcopy(OD_cell)
  43. another_cells=[x for x in OD_cell if x !=cell]
  44. for another_cell in another_cells:
  45. ## generate_missing_trips_A
  46. O_trip=cell
  47. D_trip= another_cell
  48. OD_trip=[O_trip,D_trip]
  49. index_time=time.time()
  50. indices = [i for i, l in enumerate(self.period_time_i) if is_ordered_sublist(OD_trip, l)]
  51. indices_other = [i for i, l in enumerate(total_nearest_cell_generate_trip_nested_list_2_other_flatten) if is_ordered_sublist(OD_trip, l)]
  52. OD_trip_revrese=[D_trip,O_trip]
  53. indices_reverse = [i for i, l in enumerate(self.period_time_i) if is_ordered_sublist(OD_trip_revrese, l)]
  54. indices_other_reverse = [i for i, l in enumerate(total_nearest_cell_generate_trip_nested_list_2_other_flatten) if is_ordered_sublist(OD_trip_revrese, l)]
  55. if len(indices) > 0:
  56. trip_or_inf=OD_trip
  57. self.total_nearest_cell_generate_trip_nested_list_new +=[self.period_time_i[indices[0]]]
  58. elif len(indices_other) > 0:
  59. trip_or_inf=OD_trip
  60. OD_trip_from_another_period=[]
  61. period_time_x_list=[]
  62. for i in indices_other :
  63. trip_index=[]
  64. trip_x= copy.deepcopy(total_nearest_cell_generate_trip_nested_list_2_other_flatten[i])
  65. period_time_x=trip_x[6]
  66. trip_index.append(period_time_x)
  67. trip_index.append(i)
  68. period_time_x_list.append(trip_index)
  69. OD_trip_from_another_period+=[trip_x]
  70. period_time_x_list.sort(key=itemgetter(0))
  71. closest_trip_index=min(period_time_x_list, key=lambda x:abs(x[0]-period_time))
  72. closest_trip_period_time_trip=copy.deepcopy(total_nearest_cell_generate_trip_nested_list_2_other_flatten[closest_trip_index[1]])
  73. closest_trip_period_time_trip[2]=0
  74. closest_trip_period_time_trip[6]=period_time
  75. closest_trip_period_time_trip[7]=period_time
  76. closest_trip_period_time_trip[8]='existed_another_period_'+str(closest_trip_index[0])
  77. closest_trip_period_time_trip[9]= 3
  78. self.total_nearest_cell_generate_trip_nested_list_new +=[closest_trip_period_time_trip]
  79. elif len(indices_reverse) > 0:
  80. trip_r_inf=OD_trip_revrese
  81. reverse_trip= self.period_time_i[indices_reverse[0]]
  82. trip_x= copy.deepcopy(reverse_trip)
  83. trip_x[0]=O_trip
  84. trip_x[1]=D_trip
  85. trip_x[2]=0
  86. trip_x[8]= 'existed_reverse'
  87. trip_x[9]= 4
  88. self.total_nearest_cell_generate_trip_nested_list_new +=[trip_x]
  89. elif len(indices_other_reverse) > 0:
  90. trip_r_inf=OD_trip_revrese
  91. OD_trip_from_another_period=[]
  92. period_time_x_list=[]
  93. for i in indices_other_reverse :
  94. trip_index=[]
  95. trip_x= copy.deepcopy(total_nearest_cell_generate_trip_nested_list_2_other_flatten[i])
  96. period_time_x=trip_x[6]
  97. trip_index.append(period_time_x)
  98. trip_index.append(i)
  99. period_time_x_list.append(trip_index)
  100. OD_trip_from_another_period+=[trip_x]
  101. period_time_x_list.sort(key=itemgetter(0))
  102. closest_trip_index=min(period_time_x_list, key=lambda x:abs(x[0]-period_time))
  103. closest_trip_period_time_trip=copy.deepcopy(total_nearest_cell_generate_trip_nested_list_2_other_flatten[closest_trip_index[1]])
  104. closest_trip_period_time_trip[0]=O_trip
  105. closest_trip_period_time_trip[1]=D_trip
  106. closest_trip_period_time_trip[2]=0
  107. closest_trip_period_time_trip[6]=period_time
  108. closest_trip_period_time_trip[7]=period_time
  109. closest_trip_period_time_trip[8]='existed_reverse_another_period_'+str(closest_trip_index[0])
  110. closest_trip_period_time_trip[9]= 5
  111. self.total_nearest_cell_generate_trip_nested_list_new +=[closest_trip_period_time_trip]
  112. print(time.time()-thread_time)
  113.  
  114. #
  115. thread1 = thread_by_thread(1)
  116. thread2 = thread_by_thread(2)
  117. thread3 = thread_by_thread(3)
  118. thread4 = thread_by_thread(4)
  119. thread5 = thread_by_thread(5)
  120. thread6 = thread_by_thread(6)
  121. thread7 = thread_by_thread(7)
  122. thread8 = thread_by_thread(8)
  123. thread9 = thread_by_thread(9)
  124. thread10 = thread_by_thread(10)
  125. thread11 = thread_by_thread(11)
  126. thread12 = thread_by_thread(12)
  127. thread13 = thread_by_thread(13)
  128. thread14 = thread_by_thread(14)
  129. thread15 = thread_by_thread(15)
  130. thread16 = thread_by_thread(16)
  131. thread17 = thread_by_thread(17)
  132. thread18 = thread_by_thread(18)
  133. thread19 = thread_by_thread(19)
  134. thread20 = thread_by_thread(20)
  135. thread21 = thread_by_thread(21)
  136. thread22 = thread_by_thread(22)
  137. thread23 = thread_by_thread(23)
  138. thread24 = thread_by_thread(24)
  139.  
  140. thread1.start()
  141. thread2.start()
  142. thread3.start()
  143. thread4.start()
  144. thread5.start()
  145. thread6.start()
  146. thread7.start()
  147. thread8.start()
  148. thread9.start()
  149. thread10.start()
  150. thread11.start()
  151. thread12.start()
  152. thread13.start()
  153. thread14.start()
  154. thread15.start()
  155. thread16.start()
  156. thread17.start()
  157. thread18.start()
  158. thread19.start()
  159. thread20.start()
  160. thread21.start()
  161. thread22.start()
  162. thread23.start()
  163. thread24.start()
  164.  
  165. thread1 = thread_by_thread(1)
  166. thread2 = thread_by_thread(2)
  167. thread3 = thread_by_thread(3)
  168. ...
  169.  
  170. threads = [thread_by_thread(i+1) for i in range(24)]
  171. for thread in threads:
  172. thread.start()
  173.  
  174. trip_r_inf=OD_trip_revrese
  175.  
  176. closest_trip_period_time_trip=copy.deepcopy(total_nearest_cell_generate_trip_nested_list_2_other_flatten[closest_trip_index[1]])
Add Comment
Please, Sign In to add comment