gpt4 book ai didi

python - 脚本中的线程在 IDLE 中工作,但不能通过 Ubuntu 命令行

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:12 27 4
gpt4 key购买 nike

我尝试运行“Python 编程”Mark Lutz 的简单代码。当我从 IDLE 运行时,一切都很好。当我从命令行运行时,脚本不起作用 - 无输出,任何错误,在 time.sleep() 中定义的时间后刚刚完成。

如何从命令行正确运行此脚本?我正在使用 Ubuntu。

import Queue, thread, time


producersnumber=3
consumersnumber=1
msgnum=3
dataqueue=Queue.Queue()#why double
safeprint=thread.allocate_lock()

def producer(no):
for i in range(msgnum):
p='signalfrom %s'%no
time.sleep(1)
dataqueue.put(p)

def consumer(no):
while 1:
time.sleep(1)
try:
data=dataqueue.get(block=False)
except Queue.Empty:
pass
else:
safeprint.acquire()
print data
safeprint.release()
if __name__=='__main__':
for i in range(consumersnumber):
thread.start_new_thread(consumer,(i,))
for i in range(producersnumber):
thread.start_new_thread(producer,(i,))
time.sleep(1)

最佳答案

最后一行中的 time.sleep(1) 将在线程实际执行任何操作之前通过程序退出来终止线程(因为生产者在发送任何内容之前会等待一秒钟)。将该行更改为 time.sleep(10) 或减少 生产者 中的 time.sleep() 值>消费者

使用time.sleep(10)你会得到:

signalfrom 1
signalfrom 0
signalfrom 2
signalfrom 1
signalfrom 0
signalfrom 2
signalfrom 1
signalfrom 0
signalfrom 2

关于python - 脚本中的线程在 IDLE 中工作,但不能通过 Ubuntu 命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26651718/

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