1
我嘗試從「Programming Python」Mark Lutz運行簡單代碼。當我從IDLE運行時,一切都很好。當我從命令行腳本運行不起作用 - 沒有輸出,任何錯誤,只是在time.sleep()
定義的時間後完成。使用線程在IDLE中工作但不通過命令行的腳本Ubuntu
如何從命令行正確運行此腳本? 我正在使用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)
空閒顯示更多的時候它在控制檯的運行速度比。嘗試在腳本中添加'print'命令來顯示變量的值。 – 101 2014-10-30 11:28:39
我期望**使用Queue.put()/ Queue.get()打印的consumer()生產者()生成的** p **變量 – MartinP 2014-10-30 11:41:06
您的代碼與書中的代碼也不相同 – 2014-10-30 11:41:07