Python multithreading/subprocess 有函数

Python multithreading/subprocess with functions

我想执行两个命令,第一个在后台执行,第二个在后台执行。

import time
loop =[ 1,100]
start_time_loop = time.time()
for in loop:
    print i
end_time_loop = time.time()

multi()
   start_time_func = time.time()
   c= 5*2
   end_time_func = time.time()

当乘法完成时,循环应该 运行 在后台。

我要证明:

start_time_loop < start_time_func
end_time_func << end_time_loop

任何指点都会有所帮助。

你需要使用多重处理来做你想做的事。它基本上在后台启动 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 的两个副本之间传输任何信息。打印总是有点奇怪,因为你真的不知道 python 的哪个副本接下来要打印。