Map Reduce を基にしたpythonのmap関数に関して

pythonで、例えばこんなmapの使い方があります。

a = map(lambda x:pow(x,2), range(100))

mapを使えば勝手に中で並列に処理してくれて高速だ、ということを聞いたことがあります。
しかし、勝手に中で並列に処理してくれるというのはどういう仕組みなのでしょう。
並列処理にできそうにない場合想定外の動きをする可能性はないでしょうか。
例えば

count = 0
def hoge(x):
  global count
  count += x
  return count
a = map(hoge, range(100))

みたいな場合です。
これはglobal変数に同時にアクセスできずおかしくなってしまうのかなと思ったのですが、想定通り(先頭から順に処理)の挙動をしてくれます。
map関数では内部でどういう並列化が行われているのでしょうか?
map関数を使うべきでない場合などあるのでしょうか。