我当前正在使用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())