如何在Python彩票模拟器中节省内存?
我做了一个Python的Powerball模拟器,但它占用了我很多内存,导致我的电脑变得很慢。我想知道怎么才能让它用更少的内存。我在想,内存里到底装了什么东西,怎么才能让它不再占满内存,因为这个程序需要长时间运行。谢谢。
from __future__ import division
import random
import time
print "welcome to powerball simulator 1, sans power play. run play_lotto(*amount of jackpots to stop at*)"
time.sleep(5)
def lotto_ticket():
ticket = [random.randint(1, 59), random.randint(1, 59), random.randint(1, 59), random.randint(1, 59), random.randint(1, 59), random.randint(1, 35)]
return ticket
def drawing():
lotto_drawing = [random.randint(1, 59), random.randint(1, 59), random.randint(1, 59), random.randint(1, 59), random.randint(1, 59), random.randint(1, 35)]
return lotto_drawing
def check_ticket(list1, list2):
compare = set(list1) & set(list2)
return len(compare)
def play_lotto(amount_of_jackpots):
money = 100
times_played = 0
tiers_won = {'tier_1': 0, 'tier_2': 0, 'tier_3': 0, 'tier_4': 0, 'tier_5': 0, 'tier_6': 0, 'tier_7': 0}
GrandPrizes = 0
while GrandPrizes != amount_of_jackpots:
ticket = lotto_ticket()
draw = drawing()
money -= 2
times_played += 1
total_times_won = tiers_won['tier_1'] + tiers_won['tier_2'] + tiers_won['tier_3'] + tiers_won['tier_4'] + tiers_won['tier_4'] + tiers_won['tier_5'] + tiers_won['tier_6'] + tiers_won['tier_7']
print 'Money: ',money
if ticket[5] == draw[5]:
print 'you win $4, matching powerball'
money += 4
tiers_won['tier_1'] +=1
print 'Times teir one has been won: ',tiers_won['tier_1']
print 'Lotto entries: ', times_played
print tiers_won
elif check_ticket(ticket, draw) == 1 and ticket[5] == draw[5]:
print 'you win $4, one matching number and matching powerball '
money += 4
tiers_won['tier_2'] +=1
print 'Times teir two has been won: ',tiers_won['tier_2']
print 'Lotto entries: ', times_played
print tiers_won
elif check_ticket(ticket, draw) == 2 and ticket[5] == draw[5]:
print 'you win $7, two matching numbers and powerball'
money += 7
tiers_won['tier_3'] +=1
print 'Times teir three has been won: ',tiers_won['tier_3']
print 'Lotto entries: ', times_played
print tiers_won
elif check_ticket(ticket, draw) == 3:
print 'you win $7, three matching numbers'
money += 7
tiers_won['tier_4'] +=1
print 'Times teir four has been won: ',tiers_won['tier_4']
print 'Lotto entries: ', times_played
print tiers_won
elif check_ticket(ticket, draw) == 3 and ticket[5] == drawing[5]:
print 'you win $100, three matching and powerball'
money += 7
tiers_won['tier_5'] +=1
print 'Times teir five has been won: ',tiers_won['tier_5']
print 'Lotto entries: ', times_played
print tiers_won
elif check_ticket(ticket, draw) == 4:
print 'you win $100, four matching numbers'
money += 100
tiers_won['tier_6'] +=1
print 'Times teir six has been won: ',tiers_won['tier_6']
print 'Lotto entries: ', times_played
print tiers_won
elif check_ticket(ticket, draw) == 4 and ticket[5] == draw[5]:
print 'you win $10000, four maching and powerball'
money += 10000
tiers_won['tier_7'] +=1
print 'Times teir seven has been won: ',tiers_won['tier_7']
print 'Lotto entries: ', times_played
print tiers_won
elif check_ticket(ticket, draw) == 5:
print 'you win $1000000, five matching'
money += 1000000
tiers_won['tier_8'] +=1
print 'Times teir eight has been won: ',tiers_won['tier_8']
print 'Lotto entries: ', times_played
print tiers_won
elif check_ticket(ticket, draw) == 5 and ticket[5] == draw[5]:
print 'you win the jackpot, $250,000,000!'
money += 2500000
GrandPrizes += 1
print 'Times teir nine has been won: ',GrandPrizes
print 'Total wins: ', tiers_won['tier_1'] + tiers_won['tier_2'] + tiers_won['tier_3'] + tiers_won['tier_4'] + tiers_won['tier_5'] + tiers_won['tier_6'] + tiers_won['tier_7'] + tiers_won['tier_8'] + GarndPrizes
print 'Lotto entries: ', times_played
print 'Win percentage: ', total_times_won/times_played
else:
print 'you lose'
print 'win percentage: ',total_times_won/times_played
print 'Entries: ', times_played
1 个回答
3
发生的情况是,你的程序在每次循环时都会输出很多行内容,而你很可能是在一个会保存每行输出的命令行界面中运行你的代码。你需要找到一种不同的方式来运行你的代码,或者把输出放到别的地方,比如一个文件里。