LazarusLong

Modular-Python-Bitcoin-Miner python2.6 patch

Feb 7th, 2012
615
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 11.55 KB | None | 0 0
  1. diff --git a/frontend/theseven/cursesui.py b/frontend/theseven/cursesui.py
  2. index ccbf054..588bf67 100644
  3. --- a/frontend/theseven/cursesui.py
  4. +++ b/frontend/theseven/cursesui.py
  5. @@ -86,7 +86,7 @@ class CursesUI(object):
  6.      for pool in pools:
  7.        bold = "B" if len(pool["children"]) > 0 else ""
  8.        uptime = 1
  9. -      try: uptime = (datetime.datetime.utcnow() - pool["starttime"]).total_seconds()
  10. +      try: uptime = (time.time() - pool["starttime"])
  11.        except: pass
  12.        try: failedpercent = 100. * pool["failedreqs"] / pool["requests"]
  13.        except: failedpercent = 0
  14. @@ -117,7 +117,7 @@ class CursesUI(object):
  15.      for worker in workers:
  16.        bold = "B" if len(worker["children"]) > 0 else ""
  17.        uptime = 1
  18. -      try: uptime = (datetime.datetime.utcnow() - worker["starttime"]).total_seconds()
  19. +      try: uptime = (time.time() - worker["starttime"])
  20.        except: pass
  21.        try: stalepercent = 100. * worker["rejected"] / (worker["accepted"] + worker["rejected"])
  22.        except: stalepercent = 0
  23. diff --git a/miner.py b/miner.py
  24. index f39310f..111bf1f 100755
  25. --- a/miner.py
  26. +++ b/miner.py
  27. @@ -94,7 +94,7 @@ class OutputRedirector(object):
  28.  class Blockchain(object):
  29.    def __init__(self, miner):
  30.      self.miner = miner
  31. -    self.lastlongpoll = datetime.datetime.utcnow() - datetime.timedelta(seconds = self.miner.longpollgrouptime)
  32. +    self.lastlongpoll = time.time() - self.miner.longpollgrouptime
  33.      self.longpollepoch = 0
  34.  
  35.  class Miner(object):
  36. @@ -184,12 +184,12 @@ class Miner(object):
  37.        self.fetchersrunning = self.fetchersrunning + 1
  38.        queuedelay = self.queuelength / self.jobspersecond
  39.        while True:
  40. -        now = datetime.datetime.utcnow()
  41. +        now = time.time()
  42.          best = None
  43.          pool = None
  44.          for p in self.pools:
  45.            p.score = p.score * self.biasdecay
  46. -          excessmhashes = p.mhashes - ((now - p.starttime).total_seconds() + queuedelay) * p.hashrate
  47. +          excessmhashes = p.mhashes - ((now - p.starttime) + queuedelay) * p.hashrate
  48.            score = excessmhashes - p.score
  49.            if excessmhashes - max(0, p.score) >= 0:
  50.              if p.priority > 0: score = max(0, score / p.priority)
  51. @@ -207,11 +207,11 @@ class Miner(object):
  52.  
  53.    def fetcher(self, pool):
  54.      with self.queuelock:
  55. -      if (datetime.datetime.utcnow() - pool.blockchain.lastlongpoll).total_seconds() > self.longpollgrouptime:
  56. +      if (time.time() - pool.blockchain.lastlongpoll) > self.longpollgrouptime:
  57.          pool.longpollepoch = pool.blockchain.longpollepoch
  58.        epoch = pool.longpollepoch
  59.        if epoch < pool.blockchain.longpollepoch:
  60. -        pool.blockeduntil = pool.blockchain.lastlongpoll + datetime.timedelta(seconds = self.longpollgrouptime)
  61. +        pool.blockeduntil = pool.blockchain.lastlongpoll + self.longpollgrouptime
  62.          with self.fetcherlock:
  63.            self.fetchersrunning = self.fetchersrunning - 1
  64.            self.adjustfetchers()
  65. @@ -227,7 +227,7 @@ class Miner(object):
  66.          pool.failedreqs = pool.failedreqs + 1
  67.          pool.score = pool.score + self.getworkfailbias
  68.        with self.queuelock:
  69. -        pool.blockeduntil = datetime.datetime.utcnow() + datetime.timedelta(seconds = 3)
  70. +        pool.blockeduntil = time.time() + 3
  71.      if job != None:
  72.        self.queuelock.acquire()
  73.        if epoch == pool.blockchain.longpollepoch:
  74. @@ -272,9 +272,9 @@ class Miner(object):
  75.      with self.queuelock:
  76.        job.pool.longpollepoch = job.pool.longpollepoch + 1
  77.        if job.pool.longpollepoch >= job.pool.blockchain.longpollepoch:
  78. -        job.pool.blockeduntil = datetime.datetime.utcnow()
  79. +        job.pool.blockeduntil = time.time()
  80.        if job.pool.longpollepoch > job.pool.blockchain.longpollepoch:
  81. -        job.pool.blockchain.lastlongpoll = datetime.datetime.utcnow()
  82. +        job.pool.blockchain.lastlongpoll = time.time()
  83.          job.pool.blockchain.longpollepoch = job.pool.longpollepoch
  84.          for w in self.workers:
  85.            try: w.cancel(job.pool.blockchain)
  86. diff --git a/pool/theseven/bcjsonrpc.py b/pool/theseven/bcjsonrpc.py
  87. index 9a58f9d..66e92f0 100644
  88. --- a/pool/theseven/bcjsonrpc.py
  89. +++ b/pool/theseven/bcjsonrpc.py
  90. @@ -43,7 +43,7 @@
  91.  import sys
  92.  import common
  93.  import base64
  94. -import datetime
  95. +import time
  96.  import json
  97.  import threading
  98.  import curses
  99. @@ -84,8 +84,8 @@ class JSONRPCPool(object):
  100.      self.rejected = 0
  101.      self.score = 0
  102.      self.mhashes = 0
  103. -    self.starttime = datetime.datetime.utcnow()
  104. -    self.blockeduntil = datetime.datetime.utcnow()
  105. +    self.starttime = time.time()
  106. +    self.blockeduntil = time.time()
  107.      self.difficulty = 0
  108.  
  109.    def getstatistics(self, childstats):
  110. diff --git a/worker/fpgamining/x6500.py b/worker/fpgamining/x6500.py
  111. index 8ecbfb2..93a6d09 100644
  112. --- a/worker/fpgamining/x6500.py
  113. +++ b/worker/fpgamining/x6500.py
  114. @@ -39,7 +39,6 @@ import common
  115.  import binascii
  116.  import threading
  117.  import time
  118. -import datetime
  119.  import hashlib
  120.  import struct
  121.  import atexit
  122. @@ -99,7 +98,7 @@ class X6500Worker(object):
  123.      self.accepted = 0      # Number of accepted shares produced by this worker * difficulty
  124.      self.rejected = 0      # Number of rejected shares produced by this worker * difficulty
  125.      self.invalid = 0       # Number of invalid shares produced by this worker
  126. -    self.starttime = datetime.datetime.utcnow()  # Start timestamp (to get average MH/s from MHashes)
  127. +    self.starttime = time.time()  # Start timestamp (to get average MH/s from MHashes)
  128.  
  129.      # Statistics lock, ensures that the UI can get a consistent statistics state
  130.      # Needs to be acquired during all operations that affect the above values
  131. @@ -251,7 +250,7 @@ class X6500FPGA(object):
  132.      self.accepted = 0      # Number of accepted shares produced by this worker * difficulty
  133.      self.rejected = 0      # Number of rejected shares produced by this worker * difficulty
  134.      self.invalid = 0       # Number of invalid shares produced by this worker
  135. -    self.starttime = datetime.datetime.utcnow()  # Start timestamp (to get average MH/s from MHashes)
  136. +    self.starttime = time.time()  # Start timestamp (to get average MH/s from MHashes)
  137.      self.temperature = None
  138.  
  139.      # Statistics lock, ensures that the UI can get a consistent statistics state
  140. @@ -484,7 +483,7 @@ class X6500FPGA(object):
  141.        # In that case, just restart things to clean up the situation.
  142.        if oldjob == None: raise Exception("Mining device sent a share before even getting a job")
  143.        # Stop time measurement
  144. -      oldjob.endtime = datetime.datetime.utcnow()
  145. +      oldjob.endtime = time.time()
  146.        # Pass the nonce that we found to the work source, if there is one.
  147.        # Do this before calculating the hash rate as it is latency critical.
  148.        if oldjob != None:
  149. @@ -503,7 +502,7 @@ class X6500FPGA(object):
  150.            if self.seconditeration == True:
  151.              with self.wakeup:
  152.                # This is the second iteration. We now know the actual nonce rotation time.
  153. -              delta = (oldjob.endtime - oldjob.starttime).total_seconds()
  154. +              delta = (oldjob.endtime - oldjob.starttime)
  155.                # Calculate the hash rate based on the nonce rotation time.
  156.                self.mhps = 2**32 / 1000000. / delta
  157.                # Tell the MPBM core that our hash rate has changed, so that it can adjust its work buffer.
  158. @@ -521,7 +520,7 @@ class X6500FPGA(object):
  159.                self.seconditeration = True
  160.        else:
  161.          # Adjust hash rate tracking
  162. -        delta = (oldjob.endtime - self.lasttime).total_seconds()
  163. +        delta = (oldjob.endtime - self.lasttime)
  164.          nonce = struct.unpack("<I", nonce)[0]
  165.          estimatednonce = int(round(self.lastnonce + self.mhps * 1000000 * delta))
  166.          noncediff = nonce - (estimatednonce & 0xffffffff)
  167. @@ -547,13 +546,13 @@ class X6500FPGA(object):
  168.      self.fpga.writeJob(job)
  169.      # Try to grab any leftover nonces from the previous job in time
  170.      self.checknonces()
  171. -    now = datetime.datetime.utcnow()
  172. +    now = time.time()
  173.      if self.job != None and self.job.starttime != None and self.job.pool != None:
  174. -      mhashes = (now - self.job.starttime).total_seconds() * self.mhps
  175. +      mhashes = (now - self.job.starttime) * self.mhps
  176.        self.job.finish(mhashes, self)
  177.        self.job.starttime = None
  178.      # Acknowledge the job by moving it from nextjob to job
  179.      self.job = self.nextjob
  180.      self.job.starttime = now
  181.      self.nextjob = None
  182. -        
  183. \ No newline at end of file
  184. +        
  185. diff --git a/worker/fpgamining/x6500hotplug.py b/worker/fpgamining/x6500hotplug.py
  186. index 55ea13e..0db0726 100644
  187. --- a/worker/fpgamining/x6500hotplug.py
  188. +++ b/worker/fpgamining/x6500hotplug.py
  189. @@ -36,7 +36,7 @@
  190.  
  191.  import sys
  192.  import time
  193. -import datetime
  194. +import time
  195.  import threading
  196.  import worker.fpgamining.x6500
  197.  
  198. @@ -75,7 +75,7 @@ class X6500HotplugWorker(object):
  199.      self.accepted = 0      # Number of accepted shares produced by this worker * difficulty
  200.      self.rejected = 0      # Number of rejected shares produced by this worker * difficulty
  201.      self.invalid = 0       # Number of invalid shares produced by this worker
  202. -    self.starttime = datetime.datetime.utcnow()  # Start timestamp (to get average MH/s from MHashes)
  203. +    self.starttime = time.time() # Start timestamp (to get average MH/s from MHashes)
  204.  
  205.      # Statistics lock, ensures that the UI can get a consistent statistics state
  206.      # Needs to be acquired during all operations that affect the above values
  207. diff --git a/worker/theseven/simplers232.py b/worker/theseven/simplers232.py
  208. index 06a07b2..0b15b33 100644
  209. --- a/worker/theseven/simplers232.py
  210. +++ b/worker/theseven/simplers232.py
  211. @@ -297,7 +297,7 @@ class SimpleRS232Worker(object):
  212.            # rate to get the number of MHashes calculated for that job and update statistics.
  213.            now = datetime.datetime.utcnow()
  214.            if self.job != None and self.job.starttime != None and self.job.pool != None:
  215. -            mhashes = (now - self.job.starttime).total_seconds() * self.mhps
  216. +            mhashes = (now - self.job.starttime) * self.mhps
  217.              self.job.finish(mhashes, self)
  218.              self.job.starttime = None
  219.  
  220. @@ -322,7 +322,7 @@ class SimpleRS232Worker(object):
  221.            # Do this before calculating the hash rate as it is latency critical.
  222.            if self.job != None: self.job.sendresult(nonce, self)
  223.            # Calculate actual on-device processing time (not including transfer times) of the job.
  224. -          delta = (self.job.endtime - self.job.starttime).total_seconds() - 40. / self.baudrate
  225. +          delta = (self.job.endtime - self.job.starttime) - 40. / self.baudrate
  226.            # Calculate the hash rate based on the processing time and number of neccessary MHashes.
  227.            # This assumes that the device processes all nonces (starting at zero) sequentially.
  228.            self.mhps = struct.unpack("<I", nonce)[0] / 1000000. / delta
  229. @@ -349,7 +349,7 @@ class SimpleRS232Worker(object):
  230.            if self.job.check != None: raise Exception("Validation job terminated without finding a share")
  231.            # Stop measuring time because the device is doing duplicate work right now
  232.            if self.job != None and self.job.starttime != None and self.job.pool != None:
  233. -            mhashes = (datetime.datetime.utcnow() - self.job.starttime).total_seconds() * self.mhps
  234. +            mhashes = (time.time() - self.job.starttime) * self.mhps
  235.              with self.job.pool.statlock: self.job.pool.mhashes = self.job.pool.mhashes + mhashes
  236.              self.mhashes = self.mhashes + mhashes
  237.              self.job.starttime = None
Advertisement
Add Comment
Please, Sign In to add comment