On 01/-10/-28163 02:59 PM, 守株待兔 wrote:
please see my code:
import os
import threading
print threading.currentThread()
print "i am parent ",os.getpid()
ret = os.fork()
print "i am here",os.getpid()
print threading.currentThread()
if ret == 0:
print threading.currentThread()
else:
os.wait()
print threading.currentThread()
print "i am runing,who am i? ",os.getpid(),threading.currentThread()
the output is:
<_MainThread(MainThread, started -1216477504)>
i am parent 13495
i am here 13495
<_MainThread(MainThread, started -1216477504)>
i am here 13496
<_MainThread(MainThread, started -1216477504)>
<_MainThread(MainThread, started -1216477504)>
i am runing,who am i? 13496<_MainThread(MainThread, started -1216477504)>
<_MainThread(MainThread, started -1216477504)>
i am runing,who am i? 13495<_MainThread(MainThread, started -1216477504)>
it is so strange that two different processes use one mainthread!!
Why would you figure that it's the same thread? You're just looking at
the ID of the thread object in each process, and ID's have no promise of
being unique between different processes, nor between multiple runs of
the same program. In CPython, the id is actually an address, and each
process has its own address space. The addresses happen to be the same
because the main thread was created before you forked.
DaveA
--
http://mail.python.org/mailman/listinfo/python-list