你需要使用多处理来做你想做的。它基本上在后台启动一个新的(克隆)python副本。
import time
from multiprocessing import Process
def thing_1():
"""We'll run this in a subprocess."""
for i in range(10):
print('thing_1: {}'.format(i))
# let's make it take a bit longer
time.sleep(1)
def thing_2():
"""We'll run this as a normal function in the current python process."""
time.sleep(1)
c = 5 * 2
print('thing_2: {}'.format(c))
# let's make this take a bit longer too
time.sleep(1)
if __name__ == '__main__':
# start the first thing running "in the background"
p = Process(target=thing_1)
p.start()
# keep a record of when we started it running
start_thing_1 = time.time()
# let's run the other thing
start_thing_2 = time.time()
thing_2()
end_thing_2 = time.time()
# this will wait for the first thing to finish
p.join()
end_thing_1 = time.time()
print('thing 1 took {}'.format(end_thing_1 - start_thing_1))
print('thing 2 took {}'.format(end_thing_2 - start_thing_2))
在最后你会看到:
thing 1 took 10.020239114761353
thing 2 took 2.003588914871216
因此,虽然thing_1在当地的蟒蛇可以在做其他事情进行后台运行。
您需要使用特殊的机制来在Python的两个副本之间传输任何信息。而且打印总是有点奇怪,因为你不知道接下来要打印哪个python副本。
可能帮助:https://stackoverflow.com/questions/23100704/running-infinite-loops-using-threads-in-python/23102874#23102874 –
Python不能使用本机运行多个进程。查看线程模块。 – Bretsky
Python可以使用多个进程 - 这就是'multiprocessing'模块的功能。 –