我有一个代表汽车刺激的代码,它基本上从文本文件读取gps点并确定汽车的速度。
多处理用于同时读取多个文本文件
我希望在多处理准备好调用检测到流量的列表后立即调用一个函数。
目前它正在多处理之前调用该函数并将其调用5次(多个进程的数量),尽管这些没有链接。
def stimulation():
if __name__ == '__main__':
p1 = Process(target=getGPSPointsFromFile, args=('gpstest-notraffic',))
p1.start()
#p1.join()
p3 = Process(target=getGPSPointsFromFile, args=('gpstest-traffic-aldomoro2',))
p3.start()
#p3.join()
p4 = Process(target=getGPSPointsFromFile, args=('gpstest-traffic-kappara1',))
p4.start()
#p4.join()
p5 = Process(target=getGPSPointsFromFile, args=('gpstest-traffic-kappara2',))
p5.start()
stimulation()
getStreetName()
我想要的只是在刺激后调用getStreetName()方法
答案 0 :(得分:0)
您开始的每个进程都会读取整个python文件并执行,因此您的每个进程都会调用这些函数
此if __name__ == '__main__':
确保后续块仅由主进程执行
您需要等待每个流程完成(通过调用join()
),然后调用您的函数
if __name__ == '__main__':
p1 = Process(target=getGPSPointsFromFile, args=('gpstest-notraffic',))
p1.start()
p3 = Process(target=getGPSPointsFromFile, args=('gpstest-traffic-aldomoro2',))
p3.start()
p4 = Process(target=getGPSPointsFromFile, args=('gpstest-traffic-kappara1',))
p4.start()
p5 = Process(target=getGPSPointsFromFile, args=('gpstest-traffic-kappara2',))
p5.start()
p1.join()
p3.join()
p4.join()
p5.join()
stimulation()
getStreetName()
此外,您可能希望在列表中收集进程,然后您可以迭代它们并在每个进程上调用join,无论您生成多少进程