我创建了两个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()