线程在空闲状态下工作但不通过命令行运行的脚本

2024-05-05 09:30:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着运行“编程Python”marklutz的简单代码。当我闲着跑的时候一切都很好。当我从命令行运行时,脚本不起作用-没有输出,任何错误,在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)

Tags: no命令行in脚本fortimequeuerange
1条回答
网友
1楼 · 发布于 2024-05-05 09:30:01

在最后一行中,您的time.sleep(1)将在线程实际执行任何操作之前通过程序退出终止线程(因为生产者在发送任何操作之前等待一秒钟)。将该行更改为time.sleep(10)或减小producerconsumer中的time.sleep()值。你知道吗

使用time.sleep(10)您将得到:

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

相关问题 更多 >