伪造信用卡号码从性能的角度看,这不是预期的更快吗?

2024-09-29 17:16:31 发布

您现在位置:Python中文网/ 问答频道 /正文

写10000条记录真的需要20分钟吗?或者是代码的编写方式可以优化

如果使用随机数生成器,所需时间不到1分钟左右

import random
import csv
from faker import Faker

def PanGeneratorType():
    fake = Faker()
    Card_Type = ['amex','mastercard','visa16','visa19','discover']
    Pan_Num = fake.credit_card_number(random.choice(Card_Type))
    return Pan_Num

def RandomGenerator():
    randCardType=random.choice([3,4,5,6])
    if randCardType==3:
        randCardNumber=random.randrange(300000000000000,399999999999999,1)
    elif randCardType==6:
        randCardNumber=random.randrange(6000000000000000,6999999999999999,1)
    elif randCardType==5:
        randCardNumber=random.randrange(5000000000000000,5999999999999999,1)
    elif randCardType==4: 
        randCardNumber=random.randrange(4000000000000000,4999999999999999,1)
    return randCardNumber    


with open("Cards.CSV", "wt", newline='') as csvFile:
    writer = csv.writer(csvFile)
    writer.writerow(['CARD_NUM'])
    for i in range(1000):
        Card_Num = PanGeneratorType()
            
    writer.writerow([Card_Num])

Tags: csvimportdeftyperandomcardnumfake
1条回答
网友
1楼 · 发布于 2024-09-29 17:16:31

仔细查看PanGeneratorType()中的内容。你叫了1000遍。 初始化1000个Faker(),每个都运行fake.credit\u card\u number()1次

def PanGeneratorType():
    fake = Faker()
    Card_Type = ['amex','mastercard','visa16','visa19','discover']
    Pan_Num = fake.credit_card_number(random.choice(Card_Type))
    return Pan_Num

t = time.time()
for i in range(1000):
   Card_Num = PanGeneratorType()
print("Time taken: " + str(time.time()-t))
Time taken: 85.47297310829163

创建1个Faker()并为其提供1000个工作,比创建1000个Faker()并每个提供1个工作要快得多

def PanGeneratorType(n):
    fake = Faker()
    Card_Type = ['amex','mastercard','visa16','visa19','discover']
    result = []
    for i in range(n):
        result.append(fake.credit_card_number(random.choice(Card_Type)))
    return result

t = time.time()
Card_Numbers = PanGeneratorType(1000)
print("Time taken: " + str(time.time()-t))

#for cc in Card_Numbers:
    #print(cc)
    #write to file
    #etc etc
Time taken: 0.11200523376464844

相关问题 更多 >

    热门问题