父脚本中的每个导入都会减慢多处理初始化?

时间:2019-03-26 08:57:48

标签: python import queue multiprocessing delay

我当前正在使用python多处理程序包,偶然发现一个奇怪的问题(使用Windows 10,python 3.6)。 我在脚本中编写并使用的模块会初始化多处理,但是在其他内核开始工作之前,会有某种程度的延迟。

事实证明,我在脚本中导入的次数越多,第一个内核开始工作所需的时间就越长。最奇怪的是我导入的模块看不到其他导入...

有点难以解释,只需看一下下面的两个虚拟脚本即可(即使那里只有一个内核用于多处理!)。如果我在第一个脚本中导入numpy和pandas,则第二个脚本中的队列将返回1s的延迟。如果我不导入这些软件包,则延迟仅为0.15s。 不管我在第一个脚本中导入什么内容,延迟都会逐渐增加。

我在Stack溢出中找不到任何类似的问题,如果有人可以帮助我解决该问题,我将非常高兴。

我已经在AWS服务器(Server 2012)上尝试过此代码-同样的问题。

第一个脚本

from multiprocessing import Process, Queue
import time
import pandas as pd
import numpy
from testmultiprocessing2 import *

if __name__ == '__main__':
   tryit()

第二个脚本

from multiprocessing import Process,  Queue
import time


def scanner(t,output_queue):
   output_queue.put(time.time()-t)

def tryit():
   output_queue = Queue()
   t=time.time()
   pr = Process(target=scanner, args=(t,output_queue))#input_queue,output_queue,debugging_queue))
   pr.start()
   pr.join()
   print(output_queue.get())

0 个答案:

没有答案