Python线程锁打印空行

Python线程锁打印空行,python,eclipse,multithreading,Python,Eclipse,Multithreading,我现在正在学习。由于每个线程的输出将指向相同的目标,无论是数据库还是写入平面文件,我假设在每个线程的输出过程之前和之后使用Lock.acquire和Lock.release from threading import Thread, Lock import time def task(argument1, lock): lock.acquire() print 'processing ' + str(argument1) lock.release() time

我现在正在学习。由于每个线程的输出将指向相同的目标,无论是数据库还是写入平面文件,我假设在每个线程的输出过程之前和之后使用Lock.acquire和Lock.release

from threading import Thread, Lock
import time

def task(argument1, lock):
    lock.acquire()
    print 'processing ' + str(argument1)
    lock.release()

    time.sleep(5)
    # Your baby code goes here

    lock.acquire()
    print 'finish processing' + str(argument1)
    lock.release()


class Worker(Thread):
    def __init__(self, argument1, lock):
        Thread.__init__(self)       
        self.value = argument1     
        self.lock = lock

    def run(self):
        task(self.value, self.lock)            # calling the routine 


def main():
    l = Lock()

    worker1 = Worker('BAV99', l)
    worker2 = Worker('ATMEGA328', l)
    worker3 = Worker('LM340', l)

    worker1.start()
    worker2.start()
    worker3.start()

if __name__ == '__main__':
你可能会被锁的用法弄糊涂。一句话,如果没有锁,你可能会把指纹摊开

无锁:

processing BAV99
processing ATMEGA328
processing LM340
finish processingBAV99finish processingLM340finish processingATMEGA328
带锁:

processing BAV99 
processing ATMEGA328
processing LM340
finish processingBAV99
finish processingLM340
finish processingATMEGA328
问题是: 我发现,有时在下面这样的输出之间存在空行,我想知道那里到底发生了什么,或者这只是日食造成的幻觉。

processing BAV99 
processing ATMEGA328
processing LM340

finish processingBAV99
finish processingLM340
finish processingATMEGA328
很抱歉,这个错误无法重复,这是最困扰我的