import time
import multiprocessing
def do_something():
print('Sleeping 1 second...')
time.sleep(1)
print('Done Sleeping')
if __name__ =='__main__':
start = time.perf_counter()
p1 = multiprocessing.Process(target=do_something())
p2 = multiprocessing.Process(target=do_something())
p1.start()
p2.start()
p1.join()
p2.join()
finish = time.perf_counter()
print(f'Finished in {round(finish-start, 2)} second(s)')
我一直在尝试做多处理,但我一直从上面的代码得到2.45秒。
我从youtube视频中得到这个代码,但是那个人得到了1.01秒,而我得到了2.45秒。这种情况发生在你们身上吗?如果不是,你们能告诉我原因吗?谢谢!
必须把函数作为目标,不能运行函数
问题在这一行:
当你把目标作为带括号的函数时,它在主线程中运行函数。这反过来会停止整个程序,而不是只给出函数。
p1 = multiprocessing.Process(target=do_something)
p2 = multiprocessing.Process(target=do_something)
完整代码:
import time
import multiprocessing
def do_something():
print('Sleeping 1 second...')
time.sleep(1)
print('Done Sleeping')
if __name__ =='__main__':
start = time.perf_counter()
p1 = multiprocessing.Process(target=do_something)
p2 = multiprocessing.Process(target=do_something)
p1.start()
p2.start()
p1.join()
p2.join()
finish = time.perf_counter()
print(f'Finished in {round(finish-start, 2)} second(s)')
然后在我的机器上,它给了我1.23秒。这在不同的机器上会有所不同。