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 的哪个副本接下来要打印。
我想执行两个命令,第一个在后台执行,第二个在后台执行。
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 的哪个副本接下来要打印。