gpt4 book ai didi

python - 使用Docker执行多个python脚本

转载 作者:行者123 更新时间:2023-12-02 19:44:33 26 4
gpt4 key购买 nike

我想同时在Docker上执行多个python脚本。
但是我发现输出顺序有些奇怪。
以下是我的测试python脚本。

import random
import time


print("start test")

# sleep time
rn = random.randint(30, 45)

# file number
rn_fn = random.randint(0, 10000000)

print("sleep %s seconds ..." % rn)
time.sleep(rn)

print("write file python_test%s_%s ..." % (rn_fn, rn))

txt_file = open('/app/python_test%s_%s.txt' % (rn_fn, rn), 'w')
txt_file.write('test %s!' % rn_fn)
txt_file.close()

print("end write file")
当我在CentOS7上使用两次运行python脚本时
python test.py &
python test.py &
输出是
00:00 - start test(1)
00:00 - start test(2)
00:00 - sleep 35 seconds ...(1)
00:00 - sleep 40 seconds ...(2)
00:35 - write file ~.txt(1)
00:35 - end write file(1)
00:40 - write file ~.txt(2)
00:40 - end write file(2)
但是当我在docker上执行它时
docker exec -i container_name /app/test.py &
docker exec -i container_name /app/test.py &
输出是
00:00 - start test(1)
00:00 - sleep 35 seconds ...(1)
00:35 - write file ~.txt(1)
00:35 - end write file(1)
00:00 - start test(2)
00:00 - sleep 40 seconds ...(2)
00:40 - write file ~.txt(2)
00:40 - end write file(2)
为什么print()的顺序在centOS和docker中不同?
docker在进程结束时是否打印?

最佳答案

如果您是从Docker容器运行python脚本,则默认情况下它没有tty,在您要运行容器时必须添加--tty,-t,
docker 运行-t yourimage
如果您不希望容器这样做,则可以通过在打印方法中添加flush参数来强制python进行刷新。
print(“Begin”,flush = True)

关于python - 使用Docker执行多个python脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64365727/

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