Advertisement
Guest User

Untitled

a guest
Apr 21st, 2024
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. api([[[a,10],[b,11],[c,12],[d,13],[e,14]],
  2. [[f,15],[g,16],[h,16],[i,17],[j,18]],
  3. [[k,19],[l,20],[m,21],[n,22],[o,23]],
  4. [[p,24],[q,25],[r,26],[s,27],[t,28]],
  5. [[u,29],[v,30],[w,31],[x,32],[y,33]]]).
  6.  
  7. task_(Count,Time,Page,[],Cont) :-
  8. succ(Page,Page0),task(Count,Time,Page0,Cont), !.
  9. task_(Count,Time,Page,[[Abc,Num]|Tuples],[Num|Nums]) :-
  10. atomic_concat("Get: ",Abc,Log),
  11. writeln(Log),sleep(2),succ(Count,Count0),
  12. rate_limit(Count0,Time,Count_rl,Time_rl),
  13. task_(Count_rl,Time_rl,Page,Tuples,Nums).
  14.  
  15. task(P,[]) :- total(P).
  16. task(Page,Results) :-
  17. atomic_concat("Page: ",Page,Log),
  18. api(Api), writeln(Log), sleep(2),
  19. nth0(Page,Api,Data), succ(Count,Count0),
  20. rate_limit(Count0,Time,Count_rl,Time_rl),
  21. task_(Count_rl,Time_rl,Page,Data,Results).
  22.  
  23. task_queue_(P,_) :- total(P),!.
  24. task_queue_(Page,Queue) :-
  25. thread_send_message(Queue,task(Page,Results)),
  26. succ(Page,Page0),
  27. task_queue_(Page0,Queue).
  28. task_queue(Queue) :-
  29. message_queue_create(Queue),
  30. task_queue_(0,Queue).
  31.  
  32.  
  33. %task_mt(1,Time,0,Result).
  34.  
  35.  
  36. main(Queue) :-
  37. api(Api),
  38. get_time(Time),
  39. set_flag(count,0),
  40. set_flag(time,Time),
  41. length(Api,Total),
  42. ( total(_)
  43. -> retract(total(_))
  44. ; true),
  45. assert(total(Total)),
  46. task_queue(Queue).
  47. %task_mt(1,Time,0,Result).
  48.  
  49. rate_limit :-
  50. get_flag(count,Count),
  51. get_flag(time,Time),
  52. get_time(Time0),
  53. T_diff is Time0-Time,
  54. (( T_diff >= 20
  55. ; Count >= 7 )
  56. -> Sleep is 21-T_diff,
  57. atomic_concat("RL: ",Sleep,Log),
  58. writeln(Log),
  59. sleep(Sleep),
  60. get_time(Time1),
  61. flag(count,_,0),
  62. flag(time,_,Time1)
  63. ;
  64. writeln("RL Miss") ).
  65.  
  66. :- dynamic total/1.
  67.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement