我试着运行“编程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)
在最后一行中,您的
time.sleep(1)
将在线程实际执行任何操作之前通过程序退出终止线程(因为生产者在发送任何操作之前等待一秒钟)。将该行更改为time.sleep(10)
或减小producer
或consumer
中的time.sleep()
值。你知道吗使用
time.sleep(10)
您将得到:相关问题 更多 >
编程相关推荐