Question: Of course the bottleneck is in Maple (may

This question is related to the Question 5) Look at the below code. It takes 7 seconds

Of course the bottleneck is in Maple (may I say as usual, especially when you are trying to innovate).
i) Socket package is not thread safe
ii) Most of the time is spend waiting for Wait(id1, id2) etc

If all the technical Maple stuff was working I could do the below call in around 1 second or less.
Now it takes 7 seconds which is way way to long if you want to download let say 50 symbols...

restart;
with(Threads):
X := proc(symb)
  uses Sockets;
  local str, sid, b;
  str := "";
  sid := Open("www.google.com", 80);
  Write(sid, cat("GET /finance/historical?q=", symb, "&output=csv HTTP/1.0 \n\n"));
  b := Read(sid);
  while b <> false do
    str := cat(str, b);
    b := Read(sid)
  end do;
  Close(sid);
  str
end proc:
tt:=time[real]():
id1 := Create(X("NASDAQ:AAPL"), str1):
id2 := Create(X("NASDAQ:MSFT"), str2):
id3 := Create(X("NASDAQ:AAPL"), str3):
id4 := Create(X("NYSE:ABB"), str4):
id5 := Create(X("NYSE:MMM"), str5):
id6 := Create(X("NASDAQ:ACTU"), str6):
time[real]()-tt ;


tt:=time[real]():
Wait(id1, id2, id3, id4, id5, id6);
time[real]()-tt ;

Please Wait...