Python 3线程性能问题



我创建了两个threads并在parallel中执行它们,但令人惊讶的是,more time(33.5 secs(比sequential执行(29.4 secs(。请建议您在做什么错误

def write_File(fName):
        start = timeit.default_timer()
        print('writing to {}!n'.format(fName))
        with open(fName, 'a') as f:
                for i in range(0, 10000000):
                        f.write("aadadadadadadadadadadadada" + str(i));
        end = timeit.default_timer()
        print(end - start)
        print('Fn exit!')
start = timeit.default_timer()
t1 = Thread(target=write_File, args=('test.txt',))
t1.start()
t2 = Thread(target=write_File, args=('test1.txt',))
t2.start()
t2.join()
end = timeit.default_timer()
print(end - start)
input('enter to exit')

您没有做错任何事情。您成为Python全球口译员锁的受害者。只有一个线程可以一次使用解释器,因此在CPYTHON程序的引擎盖下,多个核心必须共享Python解释器的一个实例。

python螺纹切换在睡觉或正在等待I/O时。因此,您将从

等任务中获得绩效收益
def do_connect():
    s = socket.socket()
    s.connect(('python.org', 80))  # drop the GIL
for i in range(2):
    t = threading.Thread(target=do_connect)
    t.start()

最新更新