Я решил создать код Python для шифрования моих данных некоторое время назад, когда я на полпути, я решил сделать тест производительности, и результат ужасен, как скорость шифрования всего 430 КБ / с. Открытие системного монитора показало, что моей программой используется только 1 поток моего процессора 8C16T.
После того, как я попытался временно удалить часть шифрования в моем коде, это было всего лишь на 10 КБ / с быстрее. Поэтому я проанализировал код и обнаружил эту часть кода
with open("10MB.test", 'rb') as f:
byte = f.read(1)
if(i == 0):
test = (str("".join([ch.encode("hex") for line in byte for ch in line])))
i = 1
while byte != "":
g = g + 1
byte = f.read(1)
a = str("".join([ch.encode("hex") for line in byte for ch in line]))
test = test + a
работает очень медленно, и системный монитор показывает, что он использует только одну нить моего процессора. Есть ли способ использовать все потоки моего процессора, чтобы сделать это быстрее?
import time
from datetime import datetime
realsr = ""
test = ""
i = 0
m = 0
g = 2
j = 0
ti1 = 0
ti2 = 0
ea = raw_input("Please Input Your First Password: ")
print "You Entered:",ea
eb = raw_input("Please Input Your Second Password: ")
print "You Entered:",eb
ec = raw_input("Please Input Your Third Password: ")
print "You Entered:",ec
ed = raw_input("Please Input Your Forth Password: ")
print "You Entered:",ed
ee = raw_input("Please Input Your Fifth Password: ")
print "You Entered:",ee
ef = raw_input("Please Input Your Sixth Password: ")
print "You Entered:",ef
eg = raw_input("Please Input Your Seventh Password: ")
print "You Entered:",eg
eh = raw_input("Please Input Your Eighth Password: ")
print "You Entered:",eh
ti1 = int(round(time.time() * 1000))
with open("10MB.test", 'rb') as d:
j = len(str("".join([ch.encode("hex") for line in d for ch in line])))
with open("10MB.test", 'rb') as f:
byte = f.read(1)
if(i == 0):
test = (str("".join([ch.encode("hex") for line in byte for ch in line])))
i = 1
while byte != "":
g = g + 1
byte = f.read(1)
a = str("".join([ch.encode("hex") for line in byte for ch in line]))
test = test + a
if(j != len(test)):
temp1 = int(a,16)
if(m == 0):
temp1 * ea
if(m == 1):
temp1 * eb
if(m == 2):
temp1 * ec
if(m == 3):
temp1 * ed
if(m == 4):
temp1 * ee
if(m == 5):
temp1 * ef
if(m == 6):
temp1 * eg
if(m == 7):
temp1 * eh
while len(test) >= j:
with open("clone.test", 'wb') as k:
k.write(test.decode("hex"))
ti2 = int(round(time.time() * 1000))
print "done!"
print test
print (ti2-ti1)
print ti1
print (ti2)
break