gpt4 book ai didi

python - 最后一个子进程启动后,主进程什么都不执行,为什么?

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:32 25 4
gpt4 key购买 nike

我这里有这段代码:

if __name__ == '__main__':

#iterate over markets_to_track
for index, market in enumerate(markets_to_track):

print('connecting to ', market['exmp'])

#launch a child process for each market
markets_to_track[index]['multiprocessing_pid'] = Process(target=collect_data, kwargs=market)
markets_to_track[index]['multiprocessing_pid'].start()

print('just connected to ', market['exmp'])

print('main process now does it\'s thing!')

子进程执行良好...有两个 markets_to_track 并且它们都按预期执行。

第一个印有“connecting to market['exmp']” 的字样被打印了两次。

第二次打印显示 "just connected to market['exmp']" 仅打印一次(在 for 循环的第一次迭代之后),此后主进程中的任何内容都不会执行。

print('main process now does it's thing!') 从未见过曙光。

我错过了什么?

感谢阅读。

编辑:将 SyntaxVoid 的 flush=True 建议添加到打印语句中,现在可以打印了,但为什么呢?!

最佳答案

flush 添加到print 语句告诉解释器立即执行输出,尽快获取所需的CPU 时间。否则,流的处理被安排在资源可用的那一刻。然而,由于您的子进程不断分配 CPU 时间,因此 print 语句将不会执行,直到子进程完成(加入)。所以 print 的输出出现在程序的最后。

当对状态更新进行冗长的计算时,有时会出现同样的问题,例如复制文件期间的进度条。

关于python - 最后一个子进程启动后,主进程什么都不执行,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57595436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com