Warum haben neue Objekte in der Mehrfachverarbeitung dieselbe ID?

Ich habe versucht, ein neues Objekt in einem Prozess zu erstellen, wenn das Multiprocessing-Modul verwendet wurde. Allerdings verwirrt mich etwas.

Wenn ich ein Multiprocessing-Modul verwende, ist die ID des neuen Objekts dieselbe

for i in range(4):
    p = multiprocessing.Process(target=worker)
    p.start()

def worker():
    # stanford named entity tagger
    st = StanfordNERTagger(model_path,stanford_ner_path)
    print id(st)    # all the processes print the same id

Aber wenn ich Threading verwende, sind sie unterschiedlich:

for i in range(4):
    p = threading.Thread(target=worker)
    p.start()

def worker():
    # stanford named entity tagger
    st = StanfordNERTagger(model_path,stanford_ner_path)
    print id(st)    # threads print differnt ids

Ich frage mich, warum sie unterschiedlich sind.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage